首页 > 解决方案 > 如何按字典的值排序字典,它是一个由 3 个值组成的数组?

问题描述

我有一本这样的字典:

{'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,但我无法弄清楚。

标签: pythonsorting

解决方案


尝试这个:

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])]

推荐阅读