如何根据相似的值和键对python字典进行排序?

时间:2015-07-25 20:21:54

标签: python dictionary

就我而言,我有一个随机的字典值,如下所示:

dict = {2: 1, 27: 28, 56: 28, 57: 29, 58: 29, 59: 29, 28: 29, 29: 1, 30: 1, 31: 1}

如果我将字典说明为层次结构图,它将是这样的: enter image description here

我的目标是将按其值排序的字典排序,而不是将类似的键并行排列到列表中。例如,如果我们从keys = 27开始,那么结果将是这样的:

list = [ 27, 28, 29, 1 ]

有什么想法解决这个问题,或者python是否有能力库来解决它?

1 个答案:

答案 0 :(得分:3)

你在寻找什么似乎是根的路径,其中字典中的每个键映射到其父级。使用生成器功能可以轻松解决问题:

d = {2: 1, 27: 28, 56: 28, 57: 29, 58: 29, 59: 29, 28: 29, 29: 1, 30: 1, 31: 1}

def path_to_root(d, start):
    yield start
    while start in d:
        start = d[start]
        yield start

print list(path_to_root(d, 27))

结果:

[27, 28, 29, 1]