statlist = [('abc',5,1), ('bzs',66,1), ... ]
sorted(statlist, key=lambda x: int(x[1]))
我想按整数从大到小排序。在这种情况下,5和66.但它似乎没有工作。
答案 0 :(得分:7)
sorted
函数返回 new 列表,因此您需要分配函数的结果,如下所示:
new_list = sorted(statlist, key=lambda x: int(x[1]))
答案 1 :(得分:7)
使用.sort
方法进行就地排序:
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist.sort(key=lambda x: int(x[1]))
如果您确实想使用sorted
,请重新分配变量:
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]))
对于降序排序,请使用reverse
:
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]), reverse=True)
然后,您最好使用itemgetter
而不是lambda
:
import operator
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=operator.itemgetter(1), reverse=True)
答案 2 :(得分:3)
您可以传递,按键和反向.sort功能
>>> x.sort(key=lambda x:x[1],reverse=True)
>>> x
[('bzs', 66, 1), ('abc', 5, 1)]
>>>
答案 3 :(得分:3)
用于就地排序使用
statlist.sort(key=lambda x: x[1])
用于创建其他列表,使用排序数据
otherlist = sorted( statlist, key=lambda x: x[1] )
答案 4 :(得分:2)
from operator import itemgetter
statlist = [('abc',5,1), ('bzs',66,1), ... ]
# statlist.sort modifiest the statlist, sorted returns a new one
# reverse puts the largest items to the front
statlist.sort(key=itemgetter(1), reverse=True)
答案 5 :(得分:1)
回应亚历克斯的评论,他认为sorted()的工作方式与“排序函数”类似:
如果它像“排序函数”一样工作,则不太可能被放入库中。
在任何情况下,都没有排序功能 ...你引用列表对象的排序方法。
使用交互式解释器进行简单演示:
>>> alist = [3, 2, 1]; x = alist.sort(); print x; print alist
None
[1, 2, 3]
>>> alist = [3, 2, 1]; x = sorted(alist); print x; print alist
[1, 2, 3]
[3, 2, 1]
这是一个提示:寻找模式和相似之处,但始终验证您的直观推断。您可能希望将这些提示应用于reverse
和reversed
。
答案 6 :(得分:0)
>>> s = [('xyz', 8, 1), ('abc',5,1), ('bzs',66,1) ]
>>> s = sorted(s, key=lambda x: int(x[1]))
>>> s.reverse()
>>> print s
[('bzs', 66, 1), ('xyz', 8, 1), ('abc', 5, 1)]
答案 7 :(得分:0)
嘿,当我将某些内容保存到数组中时,我不会担心订单,最后我会使用sorted()
,例如statlist = sorted(statlist)
,如果你想要它从大到小statlist = sorted(statlist, reverse = True)
这是从最小到最小的简单方法!
我使用过的示例代码(仅提取)
while i <= math.sqrt(intnum):
if (intnum % i) == 0:
numbers.insert(0,i)
numbers.insert(0,int(intnum/i))
print(i,":", int(intnum/i))
i += 1
numbers = sorted(numbers, reverse = True)