1

我正在尝试获取具有以下结构的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

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

我说得很具体,这只是一个例子。我实际上对我在寻找什么感到困惑。我必须这样做很多次,他们是将字典映射到这样的表的简单方法吗?我应该寻找一些模块吗?

在此先感谢,

4

2 回答 2

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')
于 2012-07-16T05:20:15.557 回答
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],

希望这会帮助你。

于 2012-07-16T05:12:07.150 回答