如何匹配两个不同列表中的项目并根据python中的匹配创建一个新列表?

问题描述 投票:0回答:1

我在python中有一个名为“ multiple_ids”的列表,其中包含一堆ID,我还有另一个名为“ ids_singular”的列表以及另一个名为“ alias”的列表。

“ ids_singular”和“ alias”的大小都相同,并且“ ids_singular”的索引对应于“ alias”的索引。这意味着说“别名”列表中的第三个值是表示“ ids_singular”中第三个值的另一种方式。

列表“ miltiple_ids”比其他两个列表大,并且包括“ ids_singular”中的所有值,但是也有重复项。“ mutiple_ids”中的每个id都可以在“ ids_singular”中找到。

我正在寻找的代码将基于“ ids_singular”列表将“ multiple_ids”中的每个项目(id)替换为“ alias”列表中的匹配别名。

我尝试了double for循环,在该循环中,我首先遍历所有“ multiple_ids”,然后遍历所有“ ids_singular”,如果它们是匹配项,则创建一个新列表,该列表具有基于同一个ID的别名“别名”列表的索引。

for i in (multiple_ids):
    for j in range(len(ids_singular)):
        if i==ids_singular[j]:
            new_multiple_ids.append(alias[j])
print(new_multiple_ids)

当我运行此代码时,什么都没有发生

python
1个回答
0
投票

我相信这就是您想要的:

multiple_ids = ['abc', 'def', 'xyz', 'def', 'xyz']
ids_singular = ['abc','def','xyz']
alias = ['a_abc','a_def', 'a_xyz']

d = dict(zip(ids_singular, alias))
result = [d[item] for item in multiple_ids]

print(result)  $ -> ['a_abc', 'a_def', 'a_xyz', 'a_def', 'a_xyz']
© www.soinside.com 2019 - 2024. All rights reserved.