[英]Print out dictionary from file
E;Z;X;Y
我试过了
dl= defaultdict(list)
for line in file:
line = line.strip().split(';')
for x in line:
dl[line[0]].append(line[1:4])
dl=dict(dl)
print (votep)
它打印出太多的结果。 我有一个读取文件的初始化程序。
我可以通过哪些方式进行编辑以使其正常工作?
csv
模块在这里可能非常方便,只需使用分号作为分隔符,简单的 dict 理解就足够了:
with open('filename.txt') as file:
reader = csv.reader(file, delimiter=';')
votep = {k: vals for k, *vals in reader}
print(votep)
不使用csv
你可以只使用str.split
:
with open('filename.txt') as file:
votep = {k: vals for k, *vals in (s.split(';') for s in file)}
print(votep)
在没有理解的情况下进一步简化,如下所示:
votep = {}
for line in file:
key, *vals = line.split(';')
votep[key] = vals
仅供参考, key, *vals = line.strip(';')
只是多变量赋值加上可迭代解包。 星号只是意味着在将第一个值分配给键之后,将可迭代的所有内容放入 vals 中。
如果您读取列表 object 中的文件,则有一个简单的 function 可以迭代并将其转换为您期望的字典:
a = [
'A;X;Y;Z',
'B;Y;Z;X',
'C;Y;Z;X',
'D;Z;X;Y',
'E;Z;X;Y',
]
def vp(a):
dl = {}
for i in a:
split_keys = i.split(';')
dl[split_keys[0]] = split_keys[1:]
print(dl)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.