【问题标题】:Search dictionary to get full path for each key搜索字典以获取每个键的完整路径
【发布时间】:2013-02-11 14:19:50
【问题描述】:

我正在尝试为字典中的键构建完整路径。

字典是在键都是唯一的但值不是唯一的地方构建的。

mydict = {'12345': '11', '45678': '11', '11': '2', '2': '6', '6': '6', '789': '2'}

我想要做的是获取每个键的完整路径,直到键 == 值,其中输出将是一个如下所示的文件:

12345, 11, 2, 6

45678, 11, 2, 6

11, 2, 6

2, 6

6

789, 2, 6

我可以在字典中搜索一次以获得第一个值,但我不知道如何将该值用作下一个键搜索并保持所有关联正确。字典只有整数,键是按数字顺序排列的。

【问题讨论】:

  • 'The dictionary is only integers' - 你发布的那个有字符串,而不是整数。此外,字典不是排序的集合,因此您不能按数字顺序排列键。并且不要使用dict 作为变量名——它会覆盖内置类型。
  • 真的很简单...作为提示,请尝试使用while key != dict[key]。另外,避免将dict 作为变量名,因为它是内置的。

标签: python loops dictionary key key-value


【解决方案1】:

应该这样做:

In [53]: mydict = {'12345': '11', '45678': '11', '11': '2', '2': '6', '6': '6', '789': '2'}

In [54]: answer = []

In [55]: for key in mydict:
   ....:     path = [key]
   ....:     while mydict[key] != key:
   ....:         key = mydict[key]
   ....:         path.append(key)
   ....:     answer.append(path)
   ....:     

In [56]: answer
Out[56]: 
[['11', '2', '6'],
 ['789', '2', '6'],
 ['45678', '11', '2', '6'],
 ['2', '6'],
 ['6'],
 ['12345', '11', '2', '6']]

【讨论】:

  • 谢谢,这正是我所需要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多