使用Python在json中添加键值

时间:2016-02-15 21:14:26

标签: python json

这是我的JSON的结构:

"docs": [
        {
            "key": [
                null,
                null,
                "some_name",
                "12345567",
                "test_name"
            ],
            "value": {
                "lat": "29.538208354844658",
                "long": "71.98762580927113"
            }
        },

我想将密钥添加到key列表中。这就是我想要输出的样子:

"docs": [
            {
                "key": [
                    "key1":null,
                    "key2":null,
                    "key3":"some_name",
                    "key4":"12345567",
                    "key5":"test_name"
                ],
                "value": {
                    "lat": "29.538208354844658",
                    "long": "71.98762580927113"
                }
            },

这是一个很好的方法。我尝试了这个但是没有工作:

for item in data['docs']:
    item['test'] = data['docs'][3]['key'][0]

更新1

根据以下答案,我已将代码调整为:

for number, item in enumerate(data['docs']):
    # pprint (item)
    # print item['key'][4]
    newdict["key1"] = item['key'][0]
    newdict["yek1"] = item['key'][1]
    newdict["key2"] = item['key'][2]
    newdict["yek2"] = item['key'][3]
    newdict["key3"] = item['key'][4]
    newdict["latitude"] = item['value']['lat']
    newdict["longitude"] = item['value']['long']

这会创建我正在寻找的JSON(我可以删除以前的列表)。如何使这个JSON在for循环之外保持不变?在循环之外,只会添加字典中的最后一个值。

1 个答案:

答案 0 :(得分:1)

在你的第一个区块中,key是一个列表,但在你的第二个区块中,它是一个dict。您需要完全替换关键项目。

newdict = {}
for number,item in enumerate(data['docs']['key']):
    newdict['key%d' % (number+1)] = item
data['docs']['key'] = newdict