我有两个不同的列表中的值:
list1 = [
"1003_0123_20200821091044_ion_fri_jl.dat",
"8005_0086_20200821090605_ion_fri_jl.dat",
"1003_0123_20200821091999_ion_fri_jl.dat",
]
list2 = [
"IMM CCA CADD USD GAAP_202103311352_20200821091999_FRI",
"ICM CCA CADD USD GAAP_202103311352_20200821090605_FRI",
"CCA CTAD USD GAAPA_202103311352_20200821091044_FRI",
]我希望对具有str.split('_')[2]获得的相同子字符串的值。例如,list1中的第一个元素具有子字符串20200821091044,它与list2中的第三个元素匹配。然后,我希望有如下匹配的值:
[
(
"1003_0123_20200821091044_ion_fri_jl.dat",
"CCA CTAD USD GAAPA_202103311352_20200821091044_FRI",
),
(
"8005_0086_20200821090605_ion_fri_jl.dat",
"ICM CCA CADD USD GAAP_202103311352_20200821090605_FRI",
),
(
"1003_0123_20200821091999_ion_fri_jl.dat",
"IMM CCA CADD USD GAAP_202103311352_20200821091999_FRI",
),
]或者是字典格式的。
发布于 2021-04-01 08:02:36
在第一个列表上循环,提取子字符串,在第二个列表上循环并找到匹配项。
results = []
for x in list1:
substring = x.split("_")[2]
for y in list2:
if substring in y:
results.append((x, y))发布于 2021-04-01 08:33:37
你的问题的前一次编辑说“或以字典的格式”,这就是我在这里要说的:
import collections
grouped = collections.defaultdict(list)
for item in list1+list2: # or itertools.chain(list1, list2)
grouped[item.split('_')[2]].append(item)grouped是:
defaultdict(list,
{'20200821091044': ['1003_0123_20200821091044_ion_fri_jl.dat',
'CCA CTAD USD GAAPA_202103311352_20200821091044_FRI'],
'20200821090605': ['8005_0086_20200821090605_ion_fri_jl.dat',
'ICM CCA CADD USD GAAP_202103311352_20200821090605_FRI'],
'20200821091999': ['1003_0123_20200821091999_ion_fri_jl.dat',
'IMM CCA CADD USD GAAP_202103311352_20200821091999_FRI']})或者用list(grouped.values())将它放在成对的列表中:
[['1003_0123_20200821091044_ion_fri_jl.dat',
'CCA CTAD USD GAAPA_202103311352_20200821091044_FRI'],
['8005_0086_20200821090605_ion_fri_jl.dat',
'ICM CCA CADD USD GAAP_202103311352_20200821090605_FRI'],
['1003_0123_20200821091999_ion_fri_jl.dat',
'IMM CCA CADD USD GAAP_202103311352_20200821091999_FRI']]https://stackoverflow.com/questions/66900481
复制相似问题