Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting - Fatal编程技术网

如何在Python中对对象进行排序

如何在Python中对对象进行排序,python,sorting,Python,Sorting,我很难找到list.sort命令的正确语法来从数组中提取正确的最高值。我有以下对象列表: [((6,(192,96,128)),1),((49,(128,32,64)),1),((2,(128,96,0)),1), ((4, (160, 160, 160)), 1), ((41977, (64, 160, 160)), 1), ((1787, (128, 32, 128)), 1), ((8, (128, 96, 160)), 1), ((1, (192, 96, 160)), 1), ((14

我很难找到list.sort命令的正确语法来从数组中提取正确的最高值。我有以下对象列表:

[((6,(192,96,128)),1),((49,(128,32,64)),1),((2,(128,96,0)),1),
((4, (160, 160, 160)), 1), ((41977, (64, 160, 160)), 1), ((1787, (128, 32, 128)), 1),
((8, (128, 96, 160)), 1), ((1, (192, 96, 160)), 1), ((14381, (0, 0, 32)), 1),
((2, (64, 96, 64)), 1), ((9, (192, 128, 160)), 1), ((410, (64, 32, 64)), 1),
((75, (192, 160, 96)), 1), ((6, (96, 0, 32)), 1), ((142163, (0, 160, 128)), 1),
((2468, (224, 192, 64)), 1), ((95, (64, 0, 32)), 1), ((224, (0, 128, 160)), 1),
((57, (96, 32, 32)), 1), ((40, (160, 96, 64)), 1)]
我想对它进行排序,这样我就可以选择最高的值:
((142163,(0160128)),1)

是否有人可以帮助我构造一个命令,该命令可以按降序对列表排序,或者选择max()值142163并返回其关联的元素(0160128)

多谢各位

  • 您可以在python的
    sorted
    函数中传递键。您还可以使用
    排序
    函数,该函数是内置函数
lst=[(6,(192,96,128)),1,(49,(128,32,64)),1,(2,(128,96,0)),1,(4,(160,160,160)),1,(41977,(64,160,160)),1,(1787,(128,32,128)),1,(8,(128,96,160)),1,(1,(192,96,160)),1,(14381,(0,0,32)),1),(2,(64,64,64)),1),(9,(192,128,96,160,160),(1),(192,96,160),(192,160),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(64,64,64),(64),(64),(64),(64),(1),(64),(1),(1),(), 1), ((6, (96, 0, 32)), 1), ((142163, (0, 160, 128)), 1), ((2468, (224, 192, 64)), 1), ((95, (64, 0, 32)), 1), ((224, (0, 128, 160)), 1), ((57, (96, 32, 32)), 1), ((40, (160, 96, 64)), 1)]
lst=sorted(lst,key=lambda x:x[0][0],reverse=True)#按每个对象的第一个元组的第一个元素排序。reverse=True将为您提供降序命令
打印(lst[0])
打印(lst[0][0][1])
  • 输出

在您的例子中,您不需要排序(
O(log(n)*n)
complexity),因为您只需要一个值。最快的方法就是使用
max
O(n)
复杂性),因为结构的顺序遵循自然顺序

>>> max(x)
((142163, (0, 160, 128)), 1)

max
也接受一个
key
参数,用于更复杂的排序情况。

尝试
print(sorted(x)[-1])
@Jean-Françoisfare我知道,但重点是让OP了解排序函数的
key
参数,以备将来参考。显式比隐式好。(参考)
>>> max(x)
((142163, (0, 160, 128)), 1)