Python 按列表列排序
我的清单如下:Python 按列表列排序,python,Python,我的清单如下: list1 = [["A",5,2,8,3],["B",9,5,1,5]] 我试着按第二列对它进行排序。我希望列表1会是 [["B",9,5,1,5],["A",5,2,8,3]] 因为9大于5,对吗?我正在使用 sorted(lis1, key=lambda a : a[1]) 然而,它并没有对它进行排序;它只是和以前一样。为什么不起作用?您只需将其反转: list1 = [["A",5,2,8,3],["B",9,5,1,5]] list1 = sorted(list1
list1 = [["A",5,2,8,3],["B",9,5,1,5]]
我试着按第二列对它进行排序。我希望列表1会是
[["B",9,5,1,5],["A",5,2,8,3]]
因为9大于5,对吗?我正在使用
sorted(lis1, key=lambda a : a[1])
然而,它并没有对它进行排序;它只是和以前一样。为什么不起作用?您只需将其反转:
list1 = [["A",5,2,8,3],["B",9,5,1,5]]
list1 = sorted(list1, key=lambda a : a[1], reverse=True)
print(list1)
# outputs [["B",9,5,1,5],["A",5,2,8,3]]
9> 5,所以它在后面出现,除非你反转。你只需要反转它:
list1 = [["A",5,2,8,3],["B",9,5,1,5]]
list1 = sorted(list1, key=lambda a : a[1], reverse=True)
print(list1)
# outputs [["B",9,5,1,5],["A",5,2,8,3]]
9> 5,所以它是在后面出现的,除非你倒过来。:
从iterable中的项目返回一个新的排序列表
它没有正确排序。:
从iterable中的项目返回一个新的排序列表
它没有进行适当排序。使用运算符。itemgetter()函数:
from operator import itemgetter
list1 = [["A",5,2,8,3],["B",9,5,1,5],["C",1,2,8,3]]
print(sorted(list1, key=itemgetter(1)))
print(sorted(list1, key=itemgetter(1), reverse=True))
输出:
[['C', 1, 2, 8, 3], ['A', 5, 2, 8, 3], ['B', 9, 5, 1, 5]]
[['B', 9, 5, 1, 5], ['A', 5, 2, 8, 3], ['C', 1, 2, 8, 3]]
使用运算符.itemgetter()函数:
from operator import itemgetter
list1 = [["A",5,2,8,3],["B",9,5,1,5],["C",1,2,8,3]]
print(sorted(list1, key=itemgetter(1)))
print(sorted(list1, key=itemgetter(1), reverse=True))
输出:
[['C', 1, 2, 8, 3], ['A', 5, 2, 8, 3], ['B', 9, 5, 1, 5]]
[['B', 9, 5, 1, 5], ['A', 5, 2, 8, 3], ['C', 1, 2, 8, 3]]
默认情况下,它按升序排序。将参数
reverse=True
添加到sorted
函数中,以默认情况下按升序生成所需的输出排序。将参数reverse=True
添加到您的sorted
函数中,以生成所需的输出,但它仍然没有更改..奇怪。。。当我复制上面的代码并运行它时,您确定正在执行:list1=sorted(list1,key=lambda:a[1],reverse=True)
sorted
不会修改列表,它会返回一个修改过的列表……您也可以这样做:list1.sort(key=lambda:a[1],reverse=True)
并且它会修改list1
,这样您就不需要重新分配给它了。啊哈!是的,现在可以了,我在它前面添加了list1=了。谢谢试过了,但仍然没有改变…奇怪。。。当我复制上面的代码并运行它时,您确定正在执行:list1=sorted(list1,key=lambda:a[1],reverse=True)
sorted
不会修改列表,它会返回一个修改过的列表……您也可以这样做:list1.sort(key=lambda:a[1],reverse=True)
并且它会修改list1
,这样您就不需要重新分配给它了。啊哈!是的,现在可以了,我在它前面添加了list1=了。谢谢