使用并行列表中的相应值对列表进行排序
您有一个字符串列表 (X) 和相应的整数列表 (Y) )。您的目标是根据列表 Y 中的值对列表 X 中的字符串进行排序。在本例中,所需的输出为:
["a", "d", "h", "b", "c", "e", "i", "f", "g"]
最短代码解决方案
实现此目的的最短方法是使用具有排序和 zip 函数的列表理解:
[x for _, x in sorted(zip(Y, X))]
此代码将列表压缩在一起,然后根据第一个元素(列表 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])]
这里,键函数从压缩的每对中提取第一个元素列表,允许您根据列表 Y 中的整数进行排序。
以上是如何根据 Python 中相应列表的值对一个列表进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!