2

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

我的意思是为了反向估值。

4

3 回答 3

3

您可以使用keyandreverse参数:

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

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

请注意,它sorted(x)返回列表的排序副本。如果要对列表进行就地排序,只需调用sort传递相同参数的列表对象的方法。另请注意,这x = sorted(x)不等于x.sort().

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

于 2012-07-18T18:15:49.833 回答
1
a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}]

a.sort(key=lambda d: -d['value'])
于 2012-07-18T18:15:03.303 回答
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}]
于 2012-07-20T00:05:20.080 回答