将python词典表示为矩阵或csvs

时间:2012-07-16 05:05:48

标签: python maps iteration dictionary

我正在尝试使用以下结构获取python字典:

>>>my_dict
>>>(i1,j1):{c1:1,c2:3,c3:4},(i2,j2):{c1:1,c2:1,c3:1}...

我想要做的是将键(i,j)和r1,r2,r3.rn放在矩阵或某种用于可视化的表中。所以表格表示如下所示。

       c1  c2  c3 ...rN
i1,j1   1   3  4        
i2,j2   1   1  1     
iN,jN

基本上我希望我的主键在列上的行和键值(这是另一个字典)上。然后轻松将键映射到列和行值。

我非常具体,这只是一个例子。我真的很困惑我正在寻找什么。我必须多次这样做,他们是一个简单的方法来将字典映射到这样的表格吗?我应该找一些模块吗?

提前致谢, Ĵ

2 个答案:

答案 0 :(得分:2)

dic={('i1','j1'):{'c1':1,'c2':3,'c3':4},('i2','j2'):{'c1':1,'c2':1,'c3':1}}
header=list(max(dic.values()))
print '\t',
print "  ".join(sorted(header))
for x in dic:
    print ",".join(x)+'\t',
    for y in sorted(dic[x]):
        print str(dic[x][y])+"  ",
    print    

<强>输出:

        c1  c2  c3
i1,j1   1   3   4  
i2,j2   1   1   1  

将此内容写入文件,请尝试以下操作:

with open('data.txt','w') as f:
    dic={('i1','j1'):{'c1':1,'c2':3,'c3':4},('i2','j2'):{'c1':1,'c2':1,'c3':1}}
    header=list(max(dic.values()))
    f.write('\t')
    f.write("  ".join(sorted(header))+'\n')
    for x in dic:
        f.write(",".join(x)+'\t')
        for y in sorted(dic[x]):
            f.write(str(dic[x][y])+"  ")
        f.write('\n')

答案 1 :(得分:1)

{ 
    'primary_key1': [{key: data},{key: data},{key: data},{key: data},{key: data},{key: data}]},
    'primary_key2': [{key: data},{key: data},{key: data},{key: data},{key: data},{key: data}]} 
     ...
    'primary_keyN': [{key: data},{key: data},{key: data},{key: data},{key: data},{key: data}]}
}

所以现在你可以使用PK将它们取回来,如果你有一个键,你可以将它们存储在dict中,并带有重复的键,如:

'primary_key1': [{key: data},{key: data},{key: data},{key: data},{key: data},{key: data}]

或者如果你总是使用唯一的值键来进行嵌套:

'primary_key1': {key: data, key: data, key: data},

或其他只有数据:

'primary_key1': [data, data, data],

希望这会对你有所帮助。