Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按列表列排序_Python - Fatal编程技术网

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=了。谢谢