Skip to main content
 首页 » 编程设计

python之当 values_list 有多个元素时从两个列表创建字典

2025年05月04日10Terrylee

我想用这个变量制作一个字典(它有一个奇怪的格式,因为它来自一个文件):

lines_no_comments = ['v:A,E,I,O,U', 'c:C,K,Q', 'b:B,P,D,M', 'z:C,Z,S'] 

所以期望的输出是这样的:

dic_final = { 
    'v':['A','E','I','O','U'], 
    'c':['C','K','Q'], 
    'b':['B','P','D','M'], 
    'z':['C','Z','S'] 
} 

我已经试过了:

dic_final={} 
for i in range(len(lines_no_comments)): 
    keys = [char.strip() for char in lines_no_comments[i].split(':')[0]] 
    values = [char.strip() for char in lines_no_comments[i].split(':')[1].split(',')] 
    dic = dict(zip(keys, values)) 
    dic = {k:v for k,v in zip(keys, values)} 
    dic_final.update(dic) 

为了说明代码,在第一个循环中,变量键和值存储:

keys = ['v'] 
values = ['A', 'E', 'I', 'O', 'U'] 

dic_final 的输出是

dic_final = {'v': 'A', 'c': 'C', 'b': 'B', 'z': 'C'} 

dict(zip(keys, values)) 似乎没有添加矢量字典的全部内容。我该如何添加其余的值元素?

请您参考如下方法:

您可以使用 defaultdict将 list 设置为默认值并循环遍历通过相应拆分更新字典的字符串:

from collections import defaultdict 
 
d = defaultdict(list) 
for i in lines_no_comments: 
    k,v = i.split(':') 
    d[k] = v.split(',') 

print(d) 
 
defaultdict(list, 
            {'v': ['A', 'E', 'I', 'O', 'U'], 
             'c': ['C', 'K', 'Q'], 
             'b': ['B', 'P', 'D', 'M'], 
             'z': ['C', 'Z', 'S']})