我基本上有一个文件夹中所有文件的列表,在简化版本中,该列表如下所示:
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']
另一个 list :
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.tag','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/