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

问题:

我有一个列表:

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

如果我想排序一个元素,说高/短元素,我可以通过s = sorted(s, key = itemgetter(1))
如果我想按both高/短和颜色排序,我可以对每个元素进行两次,一次,但是有更快的方法吗?

回答:

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

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

或者您可以使用itemgetter

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

请注意,您可以使用sort而不是使用sorted然后重新分配:

s.sort(key = operator.itemgetter(1, 2))

Code问答: http://codewenda.com/topics/python/
Stackoverflow: Sort a list by multiple attributes?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

59 − = 51