我知道这可能是一个非常天真的错误,但现在已经让我很紧张了。
我有一个嵌套词典列表,如
grs = [{
'CS9': {
'Monday': [{
1: {
'subject': 'ESD',
'teacherName': 'Goku',
'venue': 'RN 141'
}
}, {
3: {
'subject': 'CN',
'teacherName': 'vegita',
'venue': 'RN 102'
}
}, {
5: {
'subject': 'ADA',
'teacherName': 'roshi',
'venue': 'RN 112'
}
}
]
}
}, {
'CS10': {
'Monday': [{
1: {
'subject': 'ESD',
'teacherName': 'Gohan ',
'venue': 'RN 141'
}
}, {
3: {
'subject': 'CN',
'teacherName': 'Saitama',
'venue': 'RN 102'
}
}, {
5: {
'subject': 'ADA',
'teacherName': 'Mob',
'venue': 'RN 112'
}
}
]
}
}
]
简而言之,两组以Monday
为节点,不同events
位于slots
所以,我想要做的是想要更新Monday
的{{1}}节点
使用data =>
CS10
所以我所做的是:
tempStuff = [{'subject': 'ESD', 'teacherName': 'Aizen', 'venue': 'RN141'}, 'CS10', 2, 'Monday']
我希望添加此代码以添加另一个字典wiz
for i in grs:
if tempStuff[1] in i.keys():
i[tempStuff[1]][tempStuff[3]].append({tempStuff[2]: tempStuff[0]})
它确实如此,但它也将此节点添加到 {
2: {
'subject': 'ESD',
'teacherName': 'Aizen',
'venue': 'RN141'
}
}
。我已经尝试了不同的方法来制作数据,并以不同的方式进行插入,但是这两个节点都发生了变化。
为什么?
对此有何帮助?
修改1
裁剪CS9
没有问题,即我已将两个节点中的数据从json
移除到Tuesday
,以便Friday
的可读性问题,因为其他节点在插入时并不重要。所以我只提到json
。
修改2
似乎在运行期间创建Monday
时出现问题我们在这里做的是我们已经通过我们自己声明了grs而在我的代码中grs得到了#34;填充"或者数据插入是由其他循环发生的。条件。一切都完成后,grs与我们在此声明的相同,没有任何变化。即插入后我们得到的grs
和我们在此声明的grs
完全相同。
编辑3
所以,这里的代码插入了我们神秘的" grs
"来自另一个嵌套的dict / list(FinalDict)。
grs
答案 0 :(得分:1)
我怀疑,这是一个共享的参考问题。在这里:
dataArrange = {}
for g in groups:
# code here
dataArrange.update({i: weekdet})
grs.append({g: dataArrange})
你一遍又一遍地重复使用dataArrange
,所以最后每个grs[x]{g}
都引用了同一个独特的词典。您必须了解Python 从不隐含地复制任何内容。
解决方案非常简单:不是一遍又一遍地重复使用相同的dataArrange
dict,而是每次都创建一个新的。