`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/