繁体   English   中英

从文件中打印字典

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM