`li = [(1106257, (255, 255, 255)), (1, (16, 16, 118)), (1, (32, 32, 128)), (1, (48, 48, 122)), (9, (249, 249, 249)), (1, (64, 64, 126)), (406, (247, 247, 251))]`


我想根据每个元素的第一个数字对li进行排序,例如:1106257、1、1、1、9、1,406

如何快速做到这一点?谢谢

最佳答案

您要问的是比较元组时的默认行为。但是,对您问题的一般答案可以是:

>>> import operator

>>> li = [(1106257, (255, 255, 255)), (1, (16, 16, 118)), (1, (32, 32, 128)), (1, (48, 48, 122)), (9, (249, 249, 249)), (1, (64, 64, 126)), (406, (247, 247, 251))]
>>> li.sort(key=operator.itemgetter(0))
>>> li
[(1, (16, 16, 118)), (1, (32, 32, 128)), (1, (48, 48, 122)), (1, (64, 64, 126)),
 (9, (249, 249, 249)), (406, (247, 247, 251)), (1106257, (255, 255, 255))]


如果要基于第一个(0)以外的列进行排序,请更改该数字。例如,如果要基于第2列和第1列进行排序,则可以提供operator.itemgetter(2, 1)作为key

关于python - Python:对列表进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4006438/

10-11 09:25