Python:如何设置具有键/子键配对的嵌套可变数据库?

问题描述 投票:0回答:3

我正在使用嵌套数据库的键和子键。我希望数据库保存所有键/子键组合的所有值。我想使用字典,因为它们是可变的。但是,字典会“扁平化”并忽略子项。该脚本似乎只保存最后一个子键值,忽略其他唯一的子键。字典应包含:{Stuff} {不同的东西} 和 {完全不同的东西}。但它只返回最后一个键/子键配对,“完全不同的东西。”

  [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)
python database dictionary key-value
3个回答
0
投票

您可以使用

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'}}}

0
投票

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/


0
投票

分配变量名称

myNestedDict
仅一次:

myNestedDict = {"key1": {"subkey1": {'data': "Stuff"}}}

然后只需在字典中分配附加键

myNestedDict["key1"]["subkey2"] = {'data': "Different stuff"}}}
myNestedDict["key1"]["subkey3"] = {'data': "Something Completely Different"}
© www.soinside.com 2019 - 2024. All rights reserved.