基于int列表的字符串排序列表(Python)

2024-04-26 11:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两张单子

X = ["a", "b", "c", "d"]
Y = [3, 1, 5, 2]

并希望将列表X排序为

X = ["c", "a", "d", "b"]

基于列表Y中相应位置项的降序值


Tags: 列表排序单子降序
3条回答
X = ["a", "b", "c", "d"]
Y = [3, 1, 5, 2]
zipped = zip(Y,X)
zipped.sort()
print zipped
[(1, 'b'), (2, 'd'), (3, 'a'), (5, 'c')]

可以使用字典保留映射,然后执行排序:

>>> X
['a', 'b', 'c', 'd']

>>> Y
[3, 1, 5, 2]

>>> d = dict(zip(X, Y))

>>> sorted(X, key=lambda x: d[x], reverse=True)
['c', 'a', 'd', 'b']

默认情况下,元组按第一个值排序。你知道吗

因此,首先用Y的项压缩列表,对其排序(反转),然后提取第二个项(X):

>>> sorted_list = [item[1] for item in sorted(zip(Y, X), reverse=True)]
>>> sorted_list
['c', 'a', 'd', 'b']
>>>

相关问题 更多 >