2014-09-04 116 views
-7

我有一個代碼嘗試在另一個字典中嵌套字典。代碼如下所示。問題是字典「CC」重寫每次通過循環寫入自己。有沒有辦法來防止這種情況?我嘗試追加到列表中,然後編寫字典,但沒有運氣。節點,CoordComboSort和Xcoord是代碼中的所有其他字典。在Python中更新字典

CoordComboSort看起來是這樣的:

{0:[(1, 4, 5), (1, 7, 4)], .001:[(4, 6, 8), (3, 8, 6)]} 

節點看起來是這樣的:

{'time':[ 'A', 'B']} 

想我最終的字典是這樣的:

{'A': 0: [(1, 4, 5)], .001: [(4, 6, 8)], 'B': 0: [(1, 7, 4)], .001: [(3, 8, 6)]} 

CC = {} 

for key in CoordComboSort.keys(): 
    for step in range(len(Xcoord[0])): 
     CC[Nodes['time'][step]] = CoordComboSort[key][step] 

以上代碼會生成如下所示的字典:

{'A': [(4, 6, 8)], 'B': [(3, 8, 6)]} 
+0

你知道,在一個字典的每個鍵必須是唯一的?看起來關鍵'Nodes ['time'] [step]'產生了相同的密鑰,因此覆蓋了最後一個密鑰:value – dawg 2014-09-04 14:30:57

+2

什麼是節點? 'CoordComboSort'? 'Xcoord'?你期待什麼輸出,你會得到什麼? – jonrsharpe 2014-09-04 14:31:07

+2

重寫iteself是什麼意思?嘗試提供可由其他SO成員運行的輸入,這些輸入將會重現您所得到的行爲。 – Korem 2014-09-04 14:31:36

回答

0

不確定我是否正確地得到了您的目標,但基於您給出以下方法的示例可能有效。

CC = {} 

for step in range(len(Nodes['time'])): 
    for key in CoordComboSort.keys(): 
     CC[Nodes['time'][step]] = {key : CoordComboSort[key][step] for key in CoordComboSort.keys()} 

您的輸入,輸出會是這樣:

{'A': {0: (1, 4, 5), 0.001: (4, 6, 8)}, 'B': {0: (1, 7, 4), 0.001: (3, 8, 6)}} 
+0

這幫了大忙!對不起,在這個問題上不太清楚。謝謝! – 2014-09-04 15:07:46

+0

不客氣。 – iuysal 2014-09-04 15:10:10