【问题标题】:How to sort the list based on dictionary of dictionary如何根据字典的字典对列表进行排序
【发布时间】:2018-09-27 07:01:37
【问题描述】:

我正在尝试根据内部字典 (a+b+C) 的值的总和对以下字典列表进行排序

d2=[{'id': 255, 's': {'a':  50, 'b': 60, 'c': 0}},
    {'id': 257, 's': {'a': 100, 'b': 10, 'c': 0}}, 
    {'id': 285, 's': {'a':  20, 'b': 10, 'c': 0}}]

【问题讨论】:

  • 您想如何解决关系? {'id': 255, ..{'id': 257.. 具有相同的总和 (110)。

标签: python sorting dictionary nested


【解决方案1】:

试试这个:

d2 = sorted(d2, key=lambda x: sum(x['s'].values()))

【讨论】:

  • 这将创建一个新列表,该列表将被取消分配。它不在d2 上就地运行。所以要么做d2 = sorted(...要么d2.sort(..
【解决方案2】:

要就地排序,请使用list.sort 并在键中使用所需的字典键。

例如:

d2.sort(key=lambda item:sum(item['s'].values()))

【讨论】:

    【解决方案3】:

    下面是解决办法,

    sorted(d2, key=lambda x:x['s']['a']+x['s']['b']+x['s']['c'])
    

    【讨论】:

    • key=lambda x:sum(x['s'].values())
    • @Ashishsiwalkar : 你想要先 257 再 255 吗?这是你所期望的吗
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2014-07-13
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多