按字典中某个键的值的顺序对字典列表进行排序

时间:2012-07-18 18:12:33

标签: python list dictionary

a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}]

我怎样才能对此进行排序:

a=[{'post': 3, 'value': 42}, {'post': 12, 'value': 25}, {'post': 4, 'value': 12}]

我的意思是为了反价值。

3 个答案:

答案 0 :(得分:3)

您可以使用keyreverse参数:

result = sorted(a, key=lambda d:d["value"], reverse=True)

key必须是一个函数,给定列表元素返回一个值,在该值上应该进行排序。在这种情况下,传递的函数是一个匿名函数,给定一个字典返回与键"value"相关联的值。

请注意,sorted(x)会返回列表的已排序副本。如果要对列表进行排序,可以调用列表对象的方法sort来传递相同的参数。另请注意,x = sorted(x)不等同于x.sort()

希望这仍然被认为是合理的Python,即使包含丑陋的“lambda”怪物......: - )

答案 1 :(得分:1)

a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}]

a.sort(key=lambda d: -d['value'])

答案 2 :(得分:0)

>>> from operator import itemgetter
>>> a=  [{'post': 3, 'value': 42}, {'post': 12, 'value': 25}, {'post': 4, 'value': 12}]
>>> sorted(a, key=itemgetter('value'), reverse=True)
[{'post': 3, 'value': 42}, {'post': 12, 'value': 25}, {'post': 4, 'value': 12}]