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