[英]Python adding data in multi-dimensional dictionary
while (E > 0):
line = raw_input("enter edges : ")
data = line.split()
mygraph[data[0]] = {data[1] : data[2]} //this line
print mygraph
E-=1
所需的數據結構:
mygraph = {
'B': {'A': 5, 'D': 1, 'G': 2}
'A': {'B': 5, 'D': 3, 'E': 12, 'F' :5}}
我想為相同的鍵添加多個條目,但mycode僅為一個節點取一個值,然后替換條目。如何做到這一點?
您需要首先為鍵data[0]
添加一個空字典(如果尚不存在),然后向其中添加值。 否則,您每次循環時都將其清除。
兩種常用方法是在普通字典上使用setdefault
:
mygraph.setdefault(data[0], {})[data[1]] = data[2]
或使用collections.defaultdict
,其中默認值為空字典:
>>> from collections import defaultdict
>>> mygraph = defaultdict(dict)
>>> edges = [[1, 2, 3], [1, 3, 6]]
>>> for edge in edges:
... mygraph[edge[1]][edge[2]] = edge[3]
>>> mygraph
{1: {2: 3,
3: 6}}
替換此行:
mygraph[data[0]] = {data[1] : data[2]}
用這些:
if not data[0] in mygraph:
mygraph[data[0]] = {}
mygraph[data[0]][data[1]] = data[2]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.