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

如何根据相似的值和键对python字典进行排序?,python,dictionary,Python,Dictionary,在我的例子中,我有一个字典的随机值,如下所示: dict = {2: 1, 27: 28, 56: 28, 57: 29, 58: 29, 59: 29, 28: 29, 29: 1, 30: 1, 31: 1} list = [ 27, 28, 29, 1 ] 如果我将字典解释为层次结构图,它将如下所示: 我的目标是将字典按其值排序,而不是按相似的键并行排序到一个列表中。例如,如果我们从keys=27开始,那么结果如下: dict = {2: 1, 27: 28, 56: 28, 57:

在我的例子中,我有一个字典的随机值,如下所示:

dict = {2: 1, 27: 28, 56: 28, 57: 29, 58: 29, 59: 29, 28: 29, 29: 1, 30: 1, 31: 1}
list = [ 27, 28, 29, 1 ]
如果我将字典解释为层次结构图,它将如下所示:

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

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

有没有办法解决这个问题,或者python是否有一个功能库来解决这个问题?

您正在寻找的似乎是指向根的路径,字典中的每个键都映射到它的父项。使用发电机功能,可以轻松解决问题:

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]

快速提示:不要在Python中使用
dict
list
作为变量名,因为这样会用相同的名称覆盖内置函数。好的,我同意你的建议,我已经添加了一个图表,这样更容易理解我的目标。请更清楚地解释一下你的逻辑?我完全不知道你想做什么。如果你从27开始,那么1是如何结束的呢?这张图意味着27的值=28,下一张图也是如此,其中28的值=29,29的值=1。