利用排序键对列表进行多属性排序
根据各个属性对列表列表进行排序通常很简单。然而,当涉及多个属性时,就会出现困境。我们可以在不进行多轮排序的情况下高效排序吗?
为了解决这个挑战,我们引入了排序键的概念。排序键充当为列表中的每个元素分配唯一值的函数,确定排序顺序。
例如,在给定列表中:
[[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]]
排序依据无论是“高/矮”还是“颜色”,我们都可以定义一个键函数,根据这些属性返回一个元组:
key = lambda x: (x[1], x[2])
使用这个键,我们可以使用排序函数对列表进行排序:
s = sorted(s, key = key)
或者,我们可以利用 itemgetter 函数来获得更快的性能:
import operator s = sorted(s, key = operator.itemgetter(1, 2))
此外,我们可以直接对使用指定键的排序函数进行列表:
s.sort(key = operator.itemgetter(1, 2))
通过排序键,我们实现了高效的多属性排序无需多次排序。
以上是排序键如何根据多个属性对列表进行高效排序?的详细内容。更多信息请关注PHP中文网其他相关文章!