【python】一个问题关于一个小算法,和一个功能的实现(实际问题)

fzc115100 2013-05-28 10:15:41
我尽量表达清楚。
我这里有一个目录。按这个目录进行功能分配。举个例子

--男人
--运动员(其实也有女运动员,举个例子而已)
--刘翔
--姚明
--水手
--水手甲
--水手乙
--船长
--船长甲
--船长丁
--女人
--导购
--导购甲
--导购乙
--董事长
--甲
--乙
这样一个目录结构,我想拿出来一个节点,就能得到所有的父节点信息。
例如 我拿出甲,就有需要知道甲 -- 董事长 -- 女人 -- 人

现在做成了一个字典的形式。
我的问题:
1.如果是一个字典,有什么办法能够通过value值得到它的key?我觉得没有办法做到。
2.想做成一个树。思路是怎样的?
3.是否有其他好主意。

最后一点补充,运动员里也有可能含有甲。
不知道我说清楚没有。。
谢谢大家。
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-05-29
  • 打赏
  • 举报
回复
dict2xml
思先 2013-05-29
  • 打赏
  • 举报
回复
你学过数据结构吗? 那里面讲过的树的遍历。算法跟这差不多。
wsyk1984 2013-05-29
  • 打赏
  • 举报
回复
写的有点啰嗦,给个思路。需要用到递归,找到目标后,输出寻找的路径。
result = []
level = 0
_findFlag = 0
  
def explore(d, value):
    global _findFlag  
    global level
    global result
    
    if level == 0:
        _findFlag = 0
        result = []
        
    for key, val in d.items():
        if val == value:
            result.append(key)  
            result.append(val)   
            _findFlag = 1                     

        if isinstance(val, dict):
            result.append(key)
            level = level + 1
            explore(val, value)   
            
        if level > 0:  
            level = level - 1
            if _findFlag != 1:    
                result.pop()   
                                      
        if _findFlag == 1:
            return result 
    
d = { "b1":"b1", "women":{"a1":1, "a2":2 },"c1":"c1", "man":{"m1":3, "m2":4 }}
print explore(d, "b1")
print explore(d, 1)
print explore(d, 1)
print explore(d, 3)
print explore(d, 4)
print explore(d, "b1")
print explore(d, "c1")

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧