提问人:EdK 提问时间:9/27/2023 最后编辑:Trenton McKinneyEdK 更新时间:9/27/2023 访问量:65
如何设置具有键/子键配对的嵌套、可变数据库?
How do I set up a nested, mutable database with key/subkey pairings?
问:
我正在将键和子键用于嵌套数据库。我希望数据库保存所有键/子键组合中的所有值。我想使用字典,因为它们是可变的。但是,字典会“扁平化”并忽略子项。该脚本似乎只保留最后一个子项值,而忽略其他唯一的子项。字典应该包含:{Stuff} {Different Stuff} 和 {Something Completely Different}。但它只返回最后一个键/子键对,“完全不同的东西”。
[key1][subkey1] = {"Stuff"}
[key1][subkey2] = {"Different stuff"}
[key1][subkey3] = {"Something Completely Different"}
我想要使用伪代码的结构: 这是我尝试过的代码。我不确定字典是否只包含最后一个主键/子键对,或者我的打印结构是否没有显示完整的字典。字典里只有“完全不同的东西”。
myNestedDict = dict()
myNestedDict = {"key1": {"subkey1": {'data': "Stuff"}}}
myNestedDict = {"key1": {"subkey2": {'data': "Different stuff"}}}
myNestedDict = {"key1": {"subkey3": {'data': "Something Completely Different"}}}
for key, value in myNestedDict.items():
for subkey, subvalue in myNestedDict[key].items():
print(key, " ", subkey, " ", subvalue)
答:
1赞
Shmath64
9/27/2023
#1
John Gordan 是对的,每次尝试添加子项时,您都会重新分配 myNestedDict。要在 python 中向字典添加键,请执行更类似的操作:
myNestedDict["key1"] = {"subkey1": {'data': "Stuff"}}
这将添加键:“key1”,并分配给它的值:嵌套字典:{“subkey1”: {'data': “Stuff”}}。
编辑:这是一个相关的 GeeksForGeeks 页面,您可能会觉得有用:https://www.geeksforgeeks.org/python-add-new-keys-to-a-dictionary/
1赞
Corralien
9/27/2023
#2
您可以使用和:pydantic
deep_update
# pip install pydantic
from pydantic.v1.utils import deep_update
myNestedDict = dict()
myNestedDict = deep_update(myNestedDict, {"key1": {"subkey1": {'data': "Stuff"}}})
myNestedDict = deep_update(myNestedDict, {"key1": {"subkey2": {'data': "Different stuff"}}})
myNestedDict = deep_update(myNestedDict, {"key1": {"subkey3": {'data': "Something Completely Different"}}})
输出:
>>> myNestedDict
{'key1': {'subkey1': {'data': 'Stuff'},
'subkey2': {'data': 'Different stuff'},
'subkey3': {'data': 'Something Completely Different'}}}
评论
1赞
EdK
10/7/2023
这是三个建议的解决方案中最好的。谢谢你的建议!
1赞
John Gordon
9/27/2023
#3
仅分配一次变量名称:myNestedDict
myNestedDict = {"key1": {"subkey1": {'data': "Stuff"}}}
然后在字典中分配其他键:
myNestedDict["key1"]["subkey2"] = {'data': "Different stuff"}
myNestedDict["key1"]["subkey3"] = {'data': "Something Completely Different"}
上一个:检索给定密钥的所有过去修订
评论
myNestedDict