python - 简明填写词典

标签 python

我有一个这种格式的文件:

1,abc
1,def
2,abc
3,abc
3,def

我正在将此文件加载到字典中,如下所示:

d = dict()
datareader = csv.reader(open(filename, "r"))

for row in datareader:
    if row[0] in d:
        d.get(row[0]).add(row[1])
    else:
        d[row[0]] = {row[1]}

它加载成功并且输出是(这是我想要的):

{'1': {'abc', 'def'}, '2': {'abc'}, '3': {'abc', 'def'}}

是否可以将 if/else 条件写在一行中?如果是,怎么办?

关于如何使此代码简洁的任何其他想法?

最佳答案

内置的 collections 模块就是这样,defaultdict :

from collections import defaultdict

d = defaultdict(set)
datareader = csv.reader(open(filename, "r"))

for key, value in datareader:
    d[key].add(value)

关于python - 简明填写词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720521/

相关文章:

python - 基于 Opencv 和 Grip 视觉机 [TypeError : src is not a numpy array, 既不是标量]

Python 速成类 - 外星人入侵 - 错误

python - 不在列表中 - 列表理解

Python 的多种字符串格式化方式——旧的(将要被)弃用了吗?

python - OrderedDict(Counter(s)) 它总是给出有序字典吗?

python - pyftpdlib make os.makedirs 权限被拒绝

python - 使用 csv.reader 的制表符分隔文件未在我期望的位置分隔

python - 文件流 - ValueError : embedded null byte

python - Pandas :Groupby 并在组内使用条件进行迭代?

Python导入父文件