列表中的多属性排序
使用Python的sorted()函数和key参数,按单个属性对列表进行排序非常简单。然而,按多个属性排序是一个挑战。
问题表述:
我们如何快速按多个属性对列表列表进行排序,例如在原题?
解法:
有两个在列表中进行多属性排序的有效方法:
使用 Lambda 函数作为键:
s = sorted(s, key = lambda x: (x[1], x[2]))
此 lambda 函数将每个sublist x 并返回一个包含第二个和第三个元素的元组,有效地指定基于这两个元素的排序顺序属性。
**使用operator.itemgetter():
import operator s = sorted(s, key = operator.itemgetter(1, 2))
operator.itemgetter()返回一个从每个子列表中提取指定元素的函数,从而使基于多个属性排序。
在这两种情况下,排序顺序都是由键函数或 itemgetter 参数中指定的属性索引的顺序确定。
附加说明:
对于就地排序,您可以使用 s.sort () 直接使用相应的键函数:
s.sort(key = operator.itemgetter(1, 2))
以上是如何在Python中按多个属性对列表列表进行高效排序?的详细内容。更多信息请关注PHP中文网其他相关文章!