Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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_Arrays_Python 3.x_Sorting - Fatal编程技术网

Python 为什么排序不正确?

Python 为什么排序不正确?,python,arrays,python-3.x,sorting,Python,Arrays,Python 3.x,Sorting,我试图使用sorted按2d数组从最大到最小的第四个值对其进行排序,但由于某些原因,排序不正确。它似乎对两个值进行了正确排序,但仅此而已。我试图在互联网上查找如何使用排序,但似乎这应该是正确的排序: stuff = [['A', '15', '23', '5'], ['A', '15', '23', '2'], ['A', '15', '23', '17'], ['A', '15', '23', '16'], ['A', '15', '23', '12']] stuff = sorted(stu

我试图使用sorted按2d数组从最大到最小的第四个值对其进行排序,但由于某些原因,排序不正确。它似乎对两个值进行了正确排序,但仅此而已。我试图在互联网上查找如何使用排序,但似乎这应该是正确的排序:

stuff = [['A', '15', '23', '5'], ['A', '15', '23', '2'], ['A', '15', '23', '17'], ['A', '15', '23', '16'], ['A', '15', '23', '12']]
stuff = sorted(stuff, key=lambda x: x[3], reverse = True)
print(stuff)
这是我得到的输出:
['A',15',23',5'],['A',15',23',2'],['A',15',23',17'],['A',15',23',16'],['A',15',23',12'].

这是因为您的
函数正在比较字符串值,所以排序很好。因此,当它试图将
'2'
'17'
进行比较时,它会逐个字符进行比较,并且由于
'2'>'1'
,它认为它具有更大的值

您可以通过在
stuff
数组第4项上使用整数轻松解决此问题:

stuff=[['A','15','23',5],'A','15','23',2],'A','15','23',17],'A','15','23',16],'A','15','23',12]]
或者通过调用
int
在键函数上将字符串转换为整数:

stuff=sorted(stuff,key=lambda x:int(x[3]),reverse=True)

好的,这个结果有什么问题吗?您需要在键函数中转换为整数:即
int(x[3])
。这应该是注释而不是答案。