按dict值排序dicts列表

use*_*568 6 python sorting dictionary list

我有以下词典列表

a = [{23:100}, {3:103}, {2:102}, {36:103}, {43:123}]
Run Code Online (Sandbox Code Playgroud)

如何对其进行排序以获得:

a = [{43:123}, {3:103}, {36:103}, {2:102}, {23:100}]
Run Code Online (Sandbox Code Playgroud)

我的意思是,按照其dicts的值按降序对列表进行排序.

Hod*_*Hod 6

除了brandizzi的答案,你可以选择:

sorted(a, key=dict.values, reverse=True)
Run Code Online (Sandbox Code Playgroud)

几乎相同的东西,但可能更惯用.


bra*_*zzi 1

您可以将key参数传递给该list.sort()方法,因此将在返回值的函数中进行比较key

>>> a = [{23:100}, {3:103}, {2:102}, {36:103}, {43:123}]
>>> a.sort(key=lambda d: d.values()[0], reversed=True)
>>> a
[{23: 100}, {2: 102}, {3: 103}, {36: 103}, {43: 123}]
Run Code Online (Sandbox Code Playgroud)

在本例中,键是一个函数,它接收字典d并使用 获取其值的列表.values()。由于只有一个值,我们从返回的列表中获取唯一的值。然后,该list.sort()方法在排序时将比较这些返回值,而不是字典本身。

  • @raym0nd 好的,已修复,尽管我应该说我更喜欢 HodfHod 解决方案:) (2认同)