【问题标题】:How to reorder two lists of different size based on one list?如何根据一个列表重新排序两个不同大小的列表?
【发布时间】:2023-02-10 04:26:09
【问题描述】:

给定两个共享元素但大小不同的不同列表,如何根据第一个列表的元素顺序对第二个列表重新排序?例如:

为了:

a = ['a', 'b', 'e', 'z', 'f']
b = ['a', 'f', 'b', 'z', 'g', 'h']

如何将列表 b 重新排序为:

['a', 'b', 'z', 'f', 'g', 'h']

为了:

a = ['a', 'c', 'j', 'r' , 'p']
b = ['b', 'c', 'a']

如何将列表 b 重新排序为:

['a', 'c', 'b']

到目前为止,我试图:

[x for y, x in sorted(zip(a, b))]

但是,我不明白如何控制列表大小不同的事实。我如何根据上述限制重新排序第二个列表?

【问题讨论】:

  • b 可以重复吗?那么会发生什么?当a 没有重复项时,是否应该将重复项移到末尾?

标签: python sorting data-structures list-comprehension


【解决方案1】:

您可以提供一个键函数来根据索引进行排序。

a = ['a', 'b', 'e', 'z', 'f']
b = ['a', 'f', 'b', 'z', 'g', 'h']
from math import inf
res = sorted(b, key=lambda x: a.index(x) if x in a else inf)
print(res)

【讨论】:

    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 2015-02-27
    • 2021-05-21
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多