Python-根据另一个列表中的值对列表进行排序?

我有一个这样的字符串列表:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

Y = [ 0, 1, 1, 0, 1, 2, 2, 0, 1]

使用Y中的值对X进行排序以获取以下输出的最短方法是什么?

["a", "d", "h", "b", "c", "e", "i", "f", "g"]

具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么?

回答:

最短代码

[x for _,x in sorted(zip(Y,X))]

例:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

Y = [ 0, 1, 1, 0, 1, 2, 2, 0, 1]

Z = [x for _,x in sorted(zip(Y,X))]

print(Z) # ["a", "d", "h", "b", "c", "e", "i", "f", "g"]

一般来说

[x for _, x in sorted(zip(Y,X), key=lambda pair: pair[0])]

解释:

  • zip两个list
  • 创建一个新的,list基于zip使用排序sorted()。
  • 使用列表推导从排序的,压缩的中提取每对的第一个元素list。

以上是 Python-根据另一个列表中的值对列表进行排序? 的全部内容, 来源链接: utcz.com/qa/435104.html

回到顶部