小编典典

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

all

我有一个列表列表:

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

如果我想按一个元素排序,比如高/短元素,我可以通过s = sorted(s, key = itemgetter(1)).

如果我想 同时 按高/短和颜色排序,我可以进行两次排序,每个元素一次,但是有更快的方法吗?


阅读 81

收藏
2022-03-06

共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))
2022-03-06