CSV数据到嵌套词典

时间:2014-07-25 22:30:34

标签: python dictionary

我有一个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]}
                   }

1 个答案:

答案 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}}