0
我有一個嵌套的Python字典,我試圖從列表中取值,然後遍歷他們進入一個快譯通的值,例如:增量項目
for row in rows:
Dict[A][AA][AAA] += 1
然而,當我打印我的字典,它似乎是將所有增量添加到所有的Dict條目中。我的意思是,與其這樣:
{KeyA:{KeyAA:{KeyAAA:5}}}
{KeyB:{KeyBB:{KeyBBB:10}}}
我得到這個:
{KeyA:{KeyAA:{KeyAAA:15}}}
{KeyB:{KeyBB:{KeyBBB:15}}}
我有點難倒。
編輯: 這是如何創建的字典: 我第一次通過一個包含類型分類的長表瀏覽。當我這樣做時,我創建了一個新的主詞典。與此同時,我收集所有的獨特分類成subDict,這樣我可以補充這主要快譯通以後:
Dict = {}
subDict = {}
for row in skimRows:
Dict[row[0]] = {"Type":row[1],"Assoc":{}} # Save each ID and origin Type to Dict
if item not in subDict: # Check to see if unique item already exists in subDict
subDict[item] = 0
這顯然是我要去哪裏錯了。當時我走的是subDict和plunking到主快譯通這一點,並沒有意識到插入subDict被保留了其原來的subDict對象關係:
for key in Dict: # After initial iteration and Type collection, add new subDict to each Dict key
Dict[key]["Assoc"] = subDict
SOLUTION: 每下面的正確答案,我通過增加固定它.copy()
for key in Dict: # After initial iteration and Type collection, add new subDict to each Dict key
Dict[key]["Assoc"] = subDict.copy()
你與*相同的字典*創建了嵌套的詞典,它們是同一個對象的所有引用。你是如何創建這個結構的? –
你能告訴我們你的示例代碼,這樣我們可以看到什麼是錯的 – duck
'row'怎麼從未用過for塊? – astreal