【问题标题】:How to order a dictionary by its value, which is an array of 3 values?如何按字典的值排序字典,它是一个由 3 个值组成的数组?
【发布时间】:2020-07-17 20:14:54
【问题描述】:

我有一本这样的字典:

{'GBR': [0, 0, 1],
 'TPE': [0, 1, 1],
 'KOR': [3, 1, 0],
 'CHN': [3, 1, 2],
 'AUS': [0, 0, 1],
 'UKR': [0, 0, 1],
 'JPN': [0, 1, 0],
 'ITA': [1, 0, 0]}

此字典中的值是 3 个值的数组。我想在所有三个值中对它进行排序,其中索引 0 具有第一优先级,索引 1 具有第二优先级,索引 2 具有最终优先级

这是我所期望的:

[('CHN', [3, 1, 2]),
 ('KOR', [3, 1, 0]),
 ('ITA', [1, 0, 0]),
 ('TPE', [0, 1, 1]),
 ('JPN', [0, 1, 0]),
 ('UKR', [0, 0, 1]),
 ('GBR', [0, 0, 1]),
 ('AUS', [0, 0, 1])]

如何使用sort 函数来做到这一点?我尝试过使用lambda,但我无法弄清楚。

【问题讨论】:

  • 这能回答你的问题吗? Python: sorting a dictionary of lists
  • list 不是数组。无论如何,您所描述的正是列表的排序方式,即按字典顺序。所以只需按值排序...

标签: python sorting


【解决方案1】:

试试这个:

d = {
 'GBR': [0, 0, 1],
 'TPE': [0, 1, 1],
 'KOR': [3, 1, 0],
 'CHN': [3, 1, 2],
 'AUS': [0, 0, 1],
 'UKR': [0, 0, 1],
 'JPN': [0, 1, 0],
 'ITA': [1, 0, 0]}

sorted(d.items(), key=lambda x: x[1], reverse=True)

结果:

[('CHN', [3, 1, 2]), ('KOR', [3, 1, 0]), ('ITA', [1, 0, 0]), ('TPE', [0, 1, 1]), ('JPN', [0, 1, 0]), ('GBR', [0, 0, 1]), ('AUS', [0, 0, 1]), ('UKR', [0, 0, 1])]

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 2021-01-21
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2017-01-23
    • 2015-12-18
    相关资源
    最近更新 更多