如何使用Python从JSON向现有列表添加键

如何使用Python从JSON向现有列表添加键,python,json,Python,Json,我已经在Python上玩了几个月了,但是我在一个问题上卡住了,特别是在现有列表中添加了一个新的键 以下是我现有的JSON数据: {"ID": 384903848394829, "Items": [{"Apples" : 10, "Bananas" : 5, "Orange" : 15}]} 然后,我想将一个项目添加到“项目”列表中,因此它看起来像这样: {"ID": 3849

我已经在Python上玩了几个月了,但是我在一个问题上卡住了,特别是在现有列表中添加了一个新的键

以下是我现有的JSON数据:

{"ID": 384903848394829, "Items": [{"Apples" : 10, "Bananas" : 5, "Orange" : 15}]}
然后,我想将一个项目添加到“项目”列表中,因此它看起来像这样:

{"ID": 384903848394829, "Items": [{"Apples" : 10, "Bananas" : 5, "Orange" : 15, "Peach" : 2}]}
以下是到目前为止我得到的信息:

import json

jsonFile = open(file)
jsonLoad = json.load(jsonFile)
fruitToAdd = {"Peach" : 2}

// Not quite sure what to put here

dump = json.dumps(jsonLoad, indent=4)
file.write(dump)
file.close()

嗯,我想你要找的是:

jsonLoad['Items'][0]['Peach'] = 2
或者,如果您想以编程方式添加答案,并且您已经硬编码了水果名称和编号,您也可以这样做:

fruitName = 'Peach'
fruitNumber = 2
jsonLoad['Items'][0][fruitName] = fruitNumber
但是,如果要坚持使用当前的FROUCTOADD变量,可以执行以下操作:

fruitToAdd = {"Peach" : 2}

fruitKey = list(fruitToAdd.keys())[0]
fruitValue = list(fruitToAdd.values())[0]

jsonLoad['Items'][0][fruitKey] = fruitValue

第三种方法非常有趣,因为您正在将字典键和值作为列表进行处理。尽管有点太复杂了。

这将是我完成这项任务的方法。(无需硬编码)


JSON数据实际上只是一个Python dict,有两个键:ID和Items。项目的值是一个只包含一个元素的列表,而该元素恰好是另一个dict

向dict“dic”添加一个键/值对就像这样简单:
dic[key]=value
但是您必须访问dict才能在json数据中进行更改

jsonLoad['Items'][0].update(fruitToAdd)
我们应该做到这一点
jsonLoad['Items']
访问Items值,该值是一个列表。
[0]
访问列表中的第一个(也是唯一一个)元素,即要修改的dict。然后使用
.update()
调用修改该dict。您可以使用一个dict更新另一个dict

在编码中通常有许多不同的方法。这只是其中之一


快乐编码

非常好,谢谢!太棒了,我今天学到了一些新东西。这是一种更干净的方式,我明白了,这也是一种更干净的方式
jsonLoad['Items'][0].update(fruitToAdd)