我有以下圖表:
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge("A","B")
g.add_edge("A","C")
g.add_edge("A","D")
g.add_edge("B","F")
g.add_edge("B","G")
g.add_edge("B","H")
g.add_edge("I","F")
g.add_edge("I","k")
nx.draw(g,with_labels=True)
plt.show()
g.nodes(data=True)
g.edges(data=True)
然后我計算了所有節點之間的最短距離,如下所示:
p = dict(nx.shortest_path_length(g))
p
輸出:
{'A': {'A': 0, 'B': 1, 'D': 1, 'C': 1, 'G': 2, 'H': 2, 'F': 2, 'I': 3, 'k': 4},
'B': {'B': 0, 'G': 1, 'H': 1, 'A': 1, 'F': 1, 'D': 2, 'C': 2, 'I': 2, 'k': 3},
'C': {'C': 0, 'A': 1, 'B': 2, 'D': 2, 'G': 3, 'H': 3, 'F': 3, 'I': 4, 'k': 5},
'D': {'D': 0, 'A': 1, 'B': 2, 'C': 2, 'G': 3, 'H': 3, 'F': 3, 'I': 4, 'k': 5},
'F': {'F': 0, 'B': 1, 'I': 1, 'k': 2, 'H': 2, 'G': 2, 'A': 2, 'D': 3, 'C': 3},
'G': {'G': 0, 'B': 1, 'H': 2, 'A': 2, 'F': 2, 'D': 3, 'C': 3, 'I': 3, 'k': 4},
'H': {'H': 0, 'B': 1, 'G': 2, 'A': 2, 'F': 2, 'D': 3, 'C': 3, 'I': 3, 'k': 4},
'I': {'I': 0, 'k': 1, 'F': 1, 'B': 2, 'G': 3, 'H': 3, 'A': 3, 'D': 4, 'C': 4},
'k': {'k': 0, 'I': 1, 'F': 2, 'B': 3, 'G': 4, 'H': 4, 'A': 4, 'D': 5, 'C': 5}}
如何僅提取所有數值(長度 = 81)并將它們存盤在串列中以供進一步操作?我試過list(p)但沒有用。
uj5u.com熱心網友回復:
由于您正在處理嵌套字典,因此一種方法是遍歷嵌套字典的第一層的值并將字典第二層的值附加到串列中。然后,您可以展平串列以獲得所需的輸出。
請參見下面的代碼:
d={'A': {'A': 0, 'B': 1, 'D': 1, 'C': 1, 'G': 2, 'H': 2, 'F': 2, 'I': 3, 'k': 4},
'B': {'B': 0, 'G': 1, 'H': 1, 'A': 1, 'F': 1, 'D': 2, 'C': 2, 'I': 2, 'k': 3},
'C': {'C': 0, 'A': 1, 'B': 2, 'D': 2, 'G': 3, 'H': 3, 'F': 3, 'I': 4, 'k': 5},
'D': {'D': 0, 'A': 1, 'B': 2, 'C': 2, 'G': 3, 'H': 3, 'F': 3, 'I': 4, 'k': 5},
'F': {'F': 0, 'B': 1, 'I': 1, 'k': 2, 'H': 2, 'G': 2, 'A': 2, 'D': 3, 'C': 3},
'G': {'G': 0, 'B': 1, 'H': 2, 'A': 2, 'F': 2, 'D': 3, 'C': 3, 'I': 3, 'k': 4},
'H': {'H': 0, 'B': 1, 'G': 2, 'A': 2, 'F': 2, 'D': 3, 'C': 3, 'I': 3, 'k': 4},
'I': {'I': 0, 'k': 1, 'F': 1, 'B': 2, 'G': 3, 'H': 3, 'A': 3, 'D': 4, 'C': 4},
'k': {'k': 0, 'I': 1, 'F': 2, 'B': 3, 'G': 4, 'H': 4, 'A': 4, 'D': 5, 'C': 5}}
list_val=[]
[list_val.append(list(value.values())) for value in d.values()]
list_val_flat=sum(list_val,[]) #flatten list
print(list_val_flat)
輸出給出:
[0, 1, 1, 1, 2, 2, 2, 3, 4, 0, 1, 1, 1, 1, 2, 2, 2, 3, 0, 1, 2, 2, 3, 3, 3, 4, 5, 0, 1, 2, 2, 3, 3, 3, 4, 5, 0, 1, 1, 2, 2, 2, 2, 3, 3, 0, 1, 2, 2, 2, 3, 3, 3, 4, 0, 1, 2, 2, 2, 3, 3, 3, 4, 0, 1, 1, 2, 3, 3, 3, 4, 4, 0, 1, 2, 3, 4, 4, 4, 5, 5]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418708.html
標籤:
下一篇:向字典添加新鍵
