根据两个不同的列表排序列表

时间:2017-09-17 15:00:22

标签: python list sorting

基于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"]

1 个答案:

答案 0 :(得分:4)

您可以简单地zip列表,然后使用sorted加解包:

>>> [i[2] for i in sorted(zip(Z, Y, X))]
['d', 'h', 'b', 'i', 'f', 'a', 'c', 'e', 'g']

通过zip先将ZY作为第二个输入进行ping操作,它将提供所需的顺序 - 外部理解会丢弃Z和{{1}再次给你留下Y值。好的,如果XZ都相同,它会通过比较Y(根据问题可能不需要)来打破联系,您可以使用自定义{禁用它{1}}排除X的功能:

key