【问题标题】:Sort nested dictionary python 2.7, by deepest value, return key tuples对嵌套字典python 2.7进行排序,按最深值,返回键元组
【发布时间】:2013-03-14 23:14:26
【问题描述】:

我有一本这样的字典:

d = {11:{'a':2.1, 'b':2.2,'c':3.0},
     12:{'b':4.5,'g':1.2},
     4:{'g':5.6,'a':4.5,'f':0.5,'r':1.3}
}

我想得到的是:

 [(4,'g'),(4,'a'),(12,'b'),(11,'c'),(11,'b'),(11,'a'),(4,'r'),(12,'g'),(4,'f')]

所以我想做的是对值进行降序排序并获取实现此顺序的字典键。

我想使用key = lambda x, y: d[x][y] 的东西,但我不知道如何返回我想要的列表。

【问题讨论】:

    标签: python sorting dictionary python-2.7


    【解决方案1】:

    应该这样做:

    sorted(((k1, k2) for k1 in d for k2 in d[k1]), key=lambda t: d[t[0]][t[1]], reverse=True)
    

    生成器表达式首先列出值的所有键“路径”,然后对值进行排序,颠倒。

    演示:

    >>> sorted(((k1, k2) for k1 in d for k2 in d[k1]), key=lambda t: d[t[0]][t[1]], reverse=True)
    [(4, 'g'), (4, 'a'), (12, 'b'), (11, 'c'), (11, 'b'), (11, 'a'), (4, 'r'), (12, 'g'), (4, 'f')]
    

    【讨论】:

    • 非常感谢!就是这样!
    猜你喜欢
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2019-02-08
    • 2019-09-09
    • 2018-11-22
    • 2016-04-30
    相关资源
    最近更新 更多