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}]
我的意思是为了反向估值。
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}]
我的意思是为了反向估值。
您可以使用key
andreverse
参数:
result = sorted(a, key=lambda d:d["value"], reverse=True)
key
必须是一个函数,它给定列表的一个元素,返回一个应该对其进行排序的值。在这种情况下,传递的函数是一个匿名函数,它给定一个字典,返回与键关联的值"value"
。
请注意,它sorted(x)
返回列表的排序副本。如果要对列表进行就地排序,只需调用sort
传递相同参数的列表对象的方法。另请注意,这x = sorted(x)
不等于x.sort()
.
希望这仍然被认为是合理的 Python,即使包含丑陋的“lambda”怪物...... :-)
a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}]
a.sort(key=lambda d: -d['value'])
>>> 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}]