【问题标题】:How do i sort the following list of dictonaries?如何对以下字典列表进行排序?
【发布时间】:2020-01-06 17:19:48
【问题描述】:

单个字典由 3 key:value 对组成,我需要通过比较第一个键对字典进行排序,如果值相同则比较第二个键等等,我该怎么做?

例如,如果字典列表如下:

lst = [{'a':10,'b':20,'c':30},{'a':20,'b':50,'c':30},{'a':20,'b':40,'c':10},{'a':20,'b':40,'c':30}]

排序后,结果必须如下:

[{'a':20,'b':50,'c':30},{'a':20,'b':40,'c':30},{'a':20,'b':40,'c':10},{'a':10,'b':20,'c':30}]

在这里我们可以看到,在最后一个3字典的键'a'的原始列表值是相同的,因此我们比较了它们的'b'键并相应地对它们进行了排序,但是最后2的'b'键字典是相同的,因此我们比较了 'c' 键并应用了排序。

【问题讨论】:

  • 您示例中的字典有 3 个键:值对,而不是 4 个。而且您知道在 3.7 之前的字典是无序的,即第一个、第二个等键是不明确的,对吧?
  • 这可能对你有帮助:stackoverflow.com/questions/72899/…

标签: python python-3.x list sorting dictionary


【解决方案1】:

您可以使用sorted,在key 函数中使用字典的values,这样将根据每个字典中的所有值进行排序:

sorted(lst, key=lambda x: list(x.values()), reverse=True)

[{'a': 20, 'b': 50, 'c': 30},
 {'a': 20, 'b': 40, 'c': 30},
 {'a': 20, 'b': 40, 'c': 10},
 {'a': 10, 'b': 20, 'c': 30}]

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2018-09-27
    相关资源
    最近更新 更多