我有一個應用程序,我有一組命名節點。對於每對節點,我想存儲它們的連接值。節點會隨着時間的推移而來,所以我無法初始化一個「數組」開始。名稱不是順序整數,而是任意對象標識或字符串名稱。從一對或名稱映射到Python中的值
我需要能夠做到:
lookup(name1, name2) -> value
而且還
set(name1, name2, value)
而且,當一個新的節點加入,要做到:
set(newname, [all other nodes], default_value)
的假設是,對於每一對,方向並不重要。即,(name1,name2)應該具有與(name2,name1)相同的值。
這方面最明顯的Python實現似乎是一個兩級詞典:
{ name1 : { name2: value, name3:value}, name2: {name1:value, name3:value}, ... etc. }
那是最好的方式做到這一點?
UPDATE
使用具有對作爲鍵的字典的建議可能是Python的內部更好。但是,我還發現有一個側面限制,可以導出和導入數據集作爲列表清單(以便支持Simics模擬器內部的狀態序列化) - 並且爲此,兩級映射是非常自然。但我猜這對夫婦也會在那裏工作。實際上很難說什麼更好。
這個數據結構看起來很像一個圖表,雖然圖表可能對你的應用程序來說是過分的。看看networkx或igraph ... –
這是一個圖表,但它是一個完全連接的圖表,因此一般圖形可能是矯枉過正的。 – jakobengblom2