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 operators = sorted(s, key = operator.itemgetter(1, 2))
并请注意,你可以在此处使用sort
而不是使用sorted
,然后重新分配:
s.sort(key = operator.itemgetter(1, 2))
以上是 Python-按多个属性对列表进行排序? 的全部内容, 来源链接: utcz.com/qa/432144.html