一尘不染

Python-按多个属性对列表进行排序?

python

我有一个清单清单:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]

如果要按一个元素(例如,高/短元素)排序,可以通过进行s = sorted(s, key = itemgetter(1))

如果我想作为排序依据两个高大/ short和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法?


阅读 1041

收藏
2020-02-13

共1个答案

一尘不染

键可以是返回元组的函数:

s = sorted(s, key = lambda x: (x[1], x[2]))

或者,你可以使用来实现相同的效果itemgetter(速度更快,并且避免了Python函数调用):

import operator
s = sorted(s, key = operator.itemgetter(1, 2))

并请注意,你可以在此处使用sort而不是使用sorted,然后重新分配:

s.sort(key = operator.itemgetter(1, 2))
2020-02-13