我有一个共同格式的大量项目词典。基本上,条件词向量。 简化字典看起来像这样:
reservoir ={
('a', 'b'): 2,
('a', 'c'): 3,
('b', 'a'): 1,
('b', 'c'): 3,
('c', 'a'): 1,
('c', 'b'): 2,
('c', 'd'): 5, ,
}
为了存储,我已经决定,如果没有共存,那么根本不存储信息,即:a和b从不出现在d的事实,因此我做没有与任何一点相关的任何信息。
我试图获得的结果是,对于每个元组,key1 = x和key2 = y,因此在矩阵中它将如下所示:
a b c d
a 0 2 3 0
b 1 0 3 0
c 1 2 0 5
d 0 0 0 0
我
我在这篇文章中找到了相关信息:Adjacency List and Adjacency Matrix in Python,但这并不是我想做的事情。到目前为止,我所有的尝试都证明不那么有成效。任何帮助都会很棒。
再次感谢,
答案 0 :(得分:3)
你真的只需要获取行和列的标签。从那里开始,只有几个for
循环:
from __future__ import print_function
import itertools
reservoir = {
('a', 'b'): 2,
('a', 'c'): 3,
('b', 'a'): 1,
('b', 'c'): 3,
('c', 'a'): 1,
('c', 'b'): 2,
('c', 'd'): 5
}
fields = sorted(list(set(itertools.chain.from_iterable(reservoir))))
print(' ', *fields)
for row in fields:
print(row, end=' ')
for column in fields:
print(reservoir.get((row, column), 0), end=' ')
print()
当细胞得到多个数字时,你的桌子会变得难看,所以我会留给你弄清楚。在打印之前,您只需要找到每列的最大字段长度。