字典条目未按预期存储,如何调整以获取期望输出?
问题解决:嵌套字典内层对象重复输出的问题
你的核心问题是key2对应的内层字典和key1指向了同一个内存对象,导致遍历输出时两次打印相同内容。即使你写的字典定义看起来是两个独立的内层字典,实际运行中可能存在引用复用的情况(比如用同一个变量赋值给两个外层键)。
正确的字典定义方式
确保两个内层字典是完全独立的对象,直接显式定义即可:
replace_dict = { "key1": {"abc": "ABCDE", "XYZ": "WXYZ"}, "key2": {"Alabama": "AL", "Alaska": "AK"} }
如果是后续赋值导致的引用复用
如果你是先创建了一个内层字典,再将其同时赋值给key1和key2(如下错误示例):
# 错误写法:两个外层键指向同一个内层字典 inner_dict = {"abc": "ABCDE", "XYZ": "WXYZ"} replace_dict = { "key1": inner_dict, "key2": inner_dict }
需要修改为创建新的内层字典,避免引用共享:
# 正确写法1:直接定义新的内层字典 inner_dict = {"abc": "ABCDE", "XYZ": "WXYZ"} replace_dict = { "key1": inner_dict, "key2": {"Alabama": "AL", "Alaska": "AK"} } # 正确写法2:基于已有字典复制后修改(如果需要复用部分内容) replace_dict = { "key1": inner_dict, "key2": inner_dict.copy() # 创建字典副本 } # 再修改key2对应的副本内容 replace_dict["key2"]["Alabama"] = "AL" replace_dict["key2"]["Alaska"] = "AK"
验证输出
执行以下代码即可得到你期望的结果:
print(replace_dict.items()) for val in replace_dict.values(): print(val)
输出结果:
dict_items([('key1', {'abc': 'ABCDE', 'XYZ': 'WXYZ'}), ('key2', {'Alabama': 'AL', 'Alaska': 'AK'})]) {'abc': 'ABCDE', 'XYZ': 'WXYZ'} {'Alabama': 'AL', 'Alaska': 'AK'}
内容的提问来源于stack exchange,提问作者git hubber
相关产品推荐
相关产品推荐

