我有一个CSV文件:
r1,s1,1
r1,s2,1
r1,s3,2
r1,s4,2
r2,s1,2
r2,s2,2
r2,s3,1
等
我想要一个可以存储的字典如下:
r1是另一个字典的关键。第三列是(数字)它们是另一个字典的键。所以我想按如下方式编写CSV数据,
dictionarystuff = {r1: {1: [s1, s2], 2: [s3, s4]},
r2: {1: [s3], 2:[S1, s2]}
}
答案 0 :(得分:1)
您可以defaultdict
dict
使用setdefault()
,使用from collections import defaultdict
data = """\
r1,s1,1
r1,s2,1
r1,s3,2
r1,s4,2
r2,s1,2
r2,s2,2
r2,s3,1
"""
d = defaultdict(dict)
for line in data.split():
a, b, c = line.split(",")
d[a].setdefault(int(c), []).append(b)
d = dict(d)
print(d)
并为每个dict键设置一个列表:
{'r1': {1: ['s1', 's2'], 2: ['s3', 's4']}, 'r2': {1: ['s3'], 2: ['s1', 's2']}}
<强>结果:强>
defaultdict
defaultdict(<class 'dict'>, {'r1': {1: ['s1', 's2'], 2: ['s3', 's4']}, 'r2': {1: ['s3'], 2: ['s1', 's2']}})
转换为常规字典以获得更好的打印效果,否则看起来像:
{{1}}