如何搭建带键/子键对的嵌套可变数据库?解决字典子键覆盖问题
解决嵌套字典被覆盖的问题
你代码的问题很明确:每次赋值都是直接替换整个字典,而不是在已有结构里添加子键。
你原来的写法里,每一行myNestedDict = {"key1": {...}}都会创建一个全新的字典对象,把之前的myNestedDict完全覆盖掉,所以最后只剩下最后一次赋值的subkey3,前面的subkey1和subkey2早就被丢弃了。
正确的写法有两种:
1. 先初始化父结构,再逐个添加子键
# 先创建包含key1的空子字典 myNestedDict = {"key1": {}} # 往key1的子字典里逐个加键值对 myNestedDict["key1"]["subkey1"] = {'data': "Stuff"} myNestedDict["key1"]["subkey2"] = {'data': "Different stuff"} myNestedDict["key1"]["subkey3"] = {'data': "Something Completely Different"}
2. 一次性构建完整的嵌套字典
如果提前知道所有键值对,可以直接写出完整结构:
myNestedDict = { "key1": { "subkey1": {'data': "Stuff"}, "subkey2": {'data': "Different stuff"}, "subkey3": {'data': "Something Completely Different"} } }
验证打印逻辑
你的打印代码没问题,也可以简化成更清晰的版本:
for key, sub_dict in myNestedDict.items(): for subkey, subvalue in sub_dict.items(): print(key, " ", subkey, " ", subvalue)
运行后就能输出所有子键的内容了。
内容的提问来源于stack exchange,提问作者EdK
相关产品推荐
相关产品推荐

