在开始时,我创建了xls_dict
和xml_dict
然后将上述2个词组包含在字典的创建中。 (我虽然是复制参考)
所以我将把json文件加载到2个dicts中。
但是,当我退出
时,我发现了 for export_file, data_dict in json_files.iteritems():
阻止。
xls_dict
和xml_dict
未更改。
这不是我的期望。
我误解了哪里?感谢
xls = MultiLangXls(xls_path, XLS_COLUMN)
xls_dict = xls.load()
xml = MultiLangXML(xml_path)
xml_dict = xml.load()
json_files={
"xls.json": xls_dict,
"xml.json": xml_dict
}
for export_file, data_dict in json_files.iteritems():
if os.path.isfile(export_file):
pass
else: # If json file not exists, then ouput the dict into json file
with open( export_file , 'w') as f:
json.dump(data_dict, f, encoding="utf-8")
load_file = open(export_file).read().decode("utf-8-sig")
data_dict = {}
data_dict = json.loads( load_file )
答案 0 :(得分:2)
data_dict
变量确实引用同一个对象而不是副本。但是,将新的字典分配给data_dict
会将变量与该对象断开连接并为其分配一个全新的字体。
要清除现有的 dict,并用新内容填充它,你想写下这样的东西:
data_dict.clear()
data_dict.update(json.loads(load_file))
答案 1 :(得分:0)
您正在将data_dict重新分配给新的字典对象。
答案 2 :(得分:0)
问题在这里:
data_dict = {} #You create new empty dictionary
# And rewrite it. But old dictionare are not cleaned.
data_dict = json.loads( load_file )
您必须按data_dict.clean()