问题

我有一个列表:

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

如果我想按一个元素排序,比如高/短的元素,我可以通过s = sorted(s, key = itemgetter(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))
 

  相同标签的其他问题

pythonsorting