我有一个这样的字符串列表:
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构造,但我很好奇是否有更短的方法。有什么建议?
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
sorted()
有关如何设置\使用key参数以及sorted一般功能的更多信息,请查看this。
key
sorted