繁体   English   中英

键为数组时更新python字典

[英]update python dictionary when key is an array

我已经看过这篇文章“ 在Python中将键添加到字典中”,但是我现在正在一个典型的场景中运行,其中键是一个数组,我想向该数组添加新值。 这是我现在的状况。

我正在读取包含json字符串的数据库列,我必须修改字符串(向该字符串添加一些其他值并保持json格式),并使用更新的json字符串更新该列。 Json的结构如下

{
"tenantCreationDate": 1476869059806,
"rdVersion": "2016a06.01",
"products": [{
    "productName": "Core",
    "currentVerison": "2016a06.01",
    "versionHistory": [{
        "startDate": 1476869059829,
        "upgradedBy": "squire",
        "version": "2016a06.01",
        "endDate": null
    }]
}, {
    "productName": "Capture",
    "currentVerison": "2016a06.01",
    "versionHistory": [{
        "startDate": 1476869059829,
        "upgradedBy": "squire",
        "version": "2016a06.01",
        "endDate": null
    }]
}, {
    "productName": "Vault",
    "currentVerison": "2016a06.01",
    "versionHistory": [{
        "startDate": 1476869059829,
        "upgradedBy": "squire",
        "version": "2016a06.01",
        "endDate": null
    }]
}, {
    "productName": "LVA",
    "currentVerison": "2016a06.01",
    "versionHistory": [{
        "startDate": 1476869059829,
        "upgradedBy": "squire",
        "version": "2016a06.01",
        "endDate": null
    }]
}, {
    "productName": "Correspondence",
    "currentVerison": "2016a06.01",
    "versionHistory": [{
        "startDate": 1476869059829,
        "upgradedBy": "squire",
        "version": "2016a06.01",
        "endDate": null
    }]
}]

}

如您所见, 产品是一个数组,在该数组下versionHistory是另一个数组,我想向该数组添加另一个版本并将其发布到数据库。所以我首先要做的是从db中读取列并转换为json

metadata = json.loads(json.dumps(row));

现在我的问题是我如何将另一个版本添加到数组并将更新后的数据提交到数据库列,并说更新后的版本历史应该看起来像-

"versionHistory": [{
        "startDate": 1476869059829,
        "upgradedBy": "squire",
        "version": "2016a06.01",
        "endDate": null
    },
    {
        "startDate": 12345678,
        "upgradedBy": "admin",
        "version": "2016.07.02",
        "endDate": 123456
    }
    ]

您的帮助将不胜感激。

您可以尝试类似:

for obj in metadata["products"]:
    if obj["productName"]==nameToLookFor:
        obj["versionHistory"].append(newObject)

这会将版本添加到您在nameToLookFor中指定的名称的产品中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM