我有一个CSV文件,想读取该文件以制作2D词典。
我尝试创建新字典:
f = csv.reader(open('test.csv', 'r'))
for row in f:
k, v, p = row
markovTransition[k] = {v: p}
上面的代码提供了我想要的输出,但当第一个字典的键相同时,它将覆盖键。
CSV文件的格式为:
A,A1,3
A,A2,4
B,B1,6
C,C3,7
C,C2,3
C,C5,1
所需的字典是:
{A: {A1: 3, A2: 4}, B: {B1: 6}, C: {C3: 7, C2: 3, C5: 1}
当前词典是:
{A: {A2: 4}, B: {B1: 6}, C{C5: 1}}
如何从CSV文件创建2d词典?谢谢。
答案 0 :(得分:3)
这是defaultdict的一个很好的用例:
markovTransition=collections.defaultdict(dict)
f = csv.reader(open('test.csv', 'r'))
for row in f:
k, v, p = row
markovTransition[k][v] = p
答案 1 :(得分:2)
尝试一下:
markovTransition = {}
f = csv.reader(open('test.csv', 'r'))
for row in f:
k, v, p = row
if k in markovTransition.keys(): # Check if already exists and then push it.
markovTransition[k].update({v: p})
else:
markovTransition[k] = {v: p}