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

我有一个清单清单:

[[12, 'tall', 'blue', 1],

[2, 'short', 'red', 9],

[4, 'tall', 'blue', 13]]

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

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

回答:

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

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))

以上是 Python-按多个属性对列表进行排序? 的全部内容, 来源链接: utcz.com/qa/432144.html

回到顶部