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}]
我的意思是为了反价值。
答案 0 :(得分:3)
您可以使用key
和reverse
参数:
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}]