我有两个列表xy。前者始终长于或等于后者。

x = ["foo","bar","qux","zox"]
y1 = ["zox", "qux","foo"]


我想做的是根据y1的顺序对x进行排序。
屈服

["foo","qux","zox"]


我尝试了这个,但是不起作用:

In [10]: [x[1] for x in sorted(zip(x,y))]
Out[10]: ['zox', 'qux']


什么是正确的方法?

最佳答案

您可以使用keysorted参数来使用第一个列表中的index

>>> sorted(y1, key=x.index)
['foo', 'qux', 'zox']

08-25 18:18