首页 > 解决方案 > 从文件创建字典(包含具有多个值的键)

问题描述

我有一个文本文件包含:

A;99
B;70
D;75
A;90
D;100
B;90
B;78
C;77

我希望我的代码根据给定的文件返回一个字典,该字典将每个字母映射到该字母的所有分数的列表。

我想要的输出:

{'A':[99,90], 'B';[70,90,78], 'D':[75,100], 'C':[77]}

这是我的代码,但它不像我想要的那样工作

d = {}
with open("textfile.txt") as f:
    for line in f:
        (key, val) = (line.strip()).split(';')
        d[key] = val

print (d)

请帮助我如何改进代码

标签: pythonfiledictionarydefaultdict

解决方案


您需要使用 a collections.defaultdict,当密钥不存在时,它将使用list构造函数放置一个空的,然后您可以append使用它

d = defaultdict(list)
with open("textfile.txt") as f:
    for line in f:
        key, val = line.strip().split(';')
        d[key].append(val)

推荐阅读