Python 为什么排序不正确?
我试图使用sorted按2d数组从最大到最小的第四个值对其进行排序,但由于某些原因,排序不正确。它似乎对两个值进行了正确排序,但仅此而已。我试图在互联网上查找如何使用排序,但似乎这应该是正确的排序: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
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])
。这应该是注释而不是答案。