如何将列表元素与元组元素匹配?

How can I match list elements with tuple elements?

我有以下列表和元组列表:

adsh_list_sub
['0000007084-22-000008', '0000766421-22-000009', '0000320193-22-000007']
cik_list
['7084', '766421', '320193']
adsh_cik_tuple
[('0000007084-22-000008', '7084'),
 ('0000766421-22-000009', '766421'),
 ('0000320193-22-000007', '320193')]
adsh_list_num
['0000007084-22-000008',
 '0000007084-22-000008',
 '0000320193-22-000007',
 '0000320193-22-000007',
 '0000766421-22-000009',
 '0000766421-22-000009',
 '0000320193-22-000007',
 '0000320193-22-000007',
 '0000007084-22-000008',
 '0000007084-22-000008',
 '0000007084-22-000008',
 '0000007084-22-000008',
 '0000007084-22-000008',
 '0000007084-22-000008',
 '0000320193-22-000007',
 '0000320193-22-000007',
 '0000007084-22-000008']

注意
(1) 'adsh_list_num' 中的所有元素都是 'adsh_list_sub' 中的元素
(2) 'adsh_list_num' 中的所有元素配对到通过 'adsh_cik_tuple'

的 cik 元素

如何生成一个新列表 'cik_num' 使得 'cik_num' 与 'adsh_list_num' 相同,除了它不包含 adsh 元素而是包含来自'adsh_cik_tuple'?

(在本例中,cik 元素的字符串不必总是包含在 'adsh' 元素中。)

预期输出:

['7084',
 '7084',
 '320193',
 '320193',
 '766421',
 '766421',
 '320193',
 '320193',
 '7084',
 '7084',
 '7084',
 '7084',
 '7084',
 '7084',
 '320193',
 '320193',
 '7084']

您可以从元组列表创建一个字典,然后使用列表推导式使用生成的映射读取结果:

mapping = dict(adsh_cik_tuple)
[mapping[item] for item in adsh_list_num]

这输出:

[
 '7084', '7084', '320193', '320193', '766421', '766421', '320193', '320193', 
 '7084', '7084', '7084', '7084', '7084', '7084', '320193', '320193', '7084'
]