【发布时间】:2013-08-11 02:44:27
【问题描述】:
我有一个包含用户和分数的列表,如下所示:
[["user1", 100], ["user2", 234], ["user3", 131]...]
我想生成一个按分数降序对用户进行排序的列表:
[["user2", 234], ["user3", 131], ["user1", 100]...]
我该如何进行这种排序?
【问题讨论】:
我有一个包含用户和分数的列表,如下所示:
[["user1", 100], ["user2", 234], ["user3", 131]...]
我想生成一个按分数降序对用户进行排序的列表:
[["user2", 234], ["user3", 131], ["user1", 100]...]
我该如何进行这种排序?
【问题讨论】:
>>> li = [["user1", 100], ["user2", 234], ["user3", 131]]
>>>
>>> import operator
>>>
>>> sorted(li, key=operator.itemgetter(1)) # Ascending order
[['user1', 100], ['user3', 131], ['user2', 234]]
>>> sorted(li, key=operator.itemgetter(1), reverse=True) # Reverse Sort
[['user2', 234], ['user3', 131], ['user1', 100]]
【讨论】:
您可以通过传递键和反向来自定义排序行为。 sorted 将返回一个新列表。如果需要就地排序,请使用list.sort。
>>> a = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> sorted(a, key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]
【讨论】:
sorted 接受可选的key 函数和反向参数。
>>> sorted([["user1", 100], ["user2", 234], ["user3", 131]], key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]
【讨论】:
l = [["user1", 100], ["user2", 234], ["user3", 131]]
l.sort(lambda x, y: x[1])
【讨论】: