簡體   English   中英

非數值元組的鄰接矩陣

[英]Adjacency Matrix of Non-numeric tuples

我有一個同時出現格式的大型詞典。 基本上,條件詞向量。 簡化的字典如下所示:

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

一世

我在這篇文章中找到了信息: Python中的鄰接列表和鄰接矩陣 ,但這並不是我想要的。 到目前為止,我所有的嘗試都沒有取得成果。 任何幫助都將是驚人的。

再次感謝,

您實際上只需要獲取行和列的標簽。 從那里開始,只有幾個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()

當單元格的位數超過一位數時,您的表格將開始變得丑陋,因此我將留給您找出答案。 您只需要在打印每列之前找到該字段的最大長度即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM