基于Python中两个(或多个列表)的值,在一个列表中对元素进行排序的正确方法是什么。假设我有三个列表:
X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [0, 1, 1, 0, 1, 2, 2, 0, 1]
Z = [2, 1, 2, 1, 2, 1, 2, 1, 1]
我想先根据X
然后根据Z
订购Y
的值。所需的输出是:
["d", "h", "b", "i", "f", "a", "c", "e", "g"]
答案 0 :(得分:4)
您可以简单地zip
列表,然后使用sorted
加解包:
>>> [i[2] for i in sorted(zip(Z, Y, X))]
['d', 'h', 'b', 'i', 'f', 'a', 'c', 'e', 'g']
通过zip
先将Z
和Y
作为第二个输入进行ping操作,它将提供所需的顺序 - 外部理解会丢弃Z
和{{1}再次给你留下Y
值。好的,如果X
和Z
都相同,它会通过比较Y
(根据问题可能不需要)来打破联系,您可以使用自定义{禁用它{1}}排除X
的功能:
key