gpt4 book ai didi

python - 如果模式匹配,则将两个列表组合成字典

转载 作者:太空狗 更新时间:2023-10-30 00:25:22 24 4
gpt4 key购买 nike

我基本上有一个文件夹中所有文件的列表,简化版本如下所示:

file_list = [ 'drug.resp1.17A.tag', 'drug.resp1.96A.tag', 'drug.resp1.56B.tag', 'drug.resp2.17A.tag', 'drug.resp2.56B.tag', 'drug.resp2.96A.tag']

另一个列表:

drug_list = [ '17A', '96A', '56B']

我想将这两个列表组合成一个字典,这样:

dictionary = {
'17A' : ['drug.resp1.17A.tag' , 'drug.resp2.17A.tag' ],
'96A' : ['drug.resp1.96A.tag' , 'drug.resp2.96A.tag' ],
'56B' : ['drug.resp1.56B.tag' , 'drug.resp2.56B.tag' ]}

我想这样做但卡住了!

dict_drugs = {}
for file in file_list:
list_filename = file.split('.')
for elem in drug_list:
if elem in list_filename:

在此之后我可以做什么来将元素加入到字典中,或者我这样做是完全错误的吗?

最佳答案

你不需要内循环

>>> file_list = [ 'drug.resp1.17A.tag', 'drug.resp1.96A.tag', 'drug.resp1.56B.tag', 'drug.resp2.17A.tag', 'drug.resp2.56B.tag', 'drug.resp2.96A.tag']
>>> dictonary = {}
... for i in file_list:
... k = i.split('.')[-2]
... if k in dictonary:
... dictonary[k].append(i)
... else:
... dictonary[k] = [i]
>>> dictonary
62: {'17A': ['drug.resp1.17A.tag', 'drug.resp2.17A.tag'],
'56B': ['drug.resp1.56B.tag', 'drug.resp2.56B.tag'],
'96A': ['drug.resp1.96A.tag', 'drug.resp2.96A.tag']}
>>>

再检查一次是否只需要 drug_list 中存在的那些值

表示如果 file_list 包含:

file_list = [ 'drug.resp1.18A.tag', 'drug.resp1.96A.tag', 'drug.resp1.56B.tag', 'drug.resp2.17A.标签', 'drug.resp2.56B.tag', 'drug.resp2.96A.tag']

>>> drug_list = [ '17A', '96A', '56B']
... dictonary = {}
... for i in file_list:
... k = i.split('.')[-2]
... if k in drug_list:
... if k in dictonary:
... dictonary[k].append(i)
... else:
... dictonary[k] = [i]
>>>

另一种有效大写的方法:

dictonary = dict(((i,[]) for i in drug_list))

dictonary = {drug: [] for drug in drug_list} # As @J.F. Sebastian suggested.

for file in file_list:
k = file.split('.')[-2]
if k in dictonary:
dictonary[k].append(file)

关于python - 如果模式匹配,则将两个列表组合成字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com