多属性列表排序
基于单个属性对列表进行排序非常简单。但是,当多个属性决定排序顺序时,需要更复杂的方法。
考虑以下列表列表:
[[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]]
仅按“高”或“对列表进行排序”可以使用sorted(s, key = itemgetter(1)) 来实现short' 属性。但是,如果排序顺序必须同时基于高度和颜色属性,则需要更有效的解决方案。
多属性键函数
对通过多个属性列表,可以定义一个键函数来返回表示所需排序顺序的元组。例如,以下键函数首先按高度排序,然后按颜色排序:
key = lambda x: (x[1], x[2])
使用此键函数,列表可以按如下方式排序:
s = sorted(s, key=key)
或者,itemgetter使用 () 可以更有效地达到相同的结果:
import operator key = operator.itemgetter(1, 2)
这个关键函数既更快又不涉及Python 函数调用。
直接排序
最后,通过使用 sort() 方法而不是排序()并重新分配,可以进一步简化上述方法。这消除了创建新列表的需要:
s.sort(key=key)
以上是如何在Python中根据多个属性对列表进行高效排序?的详细内容。更多信息请关注PHP中文网其他相关文章!