我想用这个变量制作一个字典(它有一个奇怪的格式,因为它来自一个文件):
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']})
