如何向JSON文件中添加元素?

65

我想在Python中向JSON文件添加一个元素,但是我无法实现。

这是我到目前为止尝试过的方法(有些变化已被删除):

import json

data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
print 'DATA:', repr(data)

var = 2.4
data.append({'f':var})
print 'JSON', json.dumps(data)

但是,我得到的结果是:

DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]
JSON [{"a": "A", "c": 3.0, "b": [2, 4]}, {"f": 2.4}]

这很好,因为我也需要它来添加新行而不是元素,但我想要像这样的东西:
[{'a': 'A', 'c': 3.0, 'b': (2, 4), "f":2.4}]

我应该如何添加新元素?


3
我认为需要理解的是,你的列表中嵌套了一个字典,在添加项时会添加一个新的元素,该元素是一个新的字典。如果想要向字典中添加内容,则应像@Jayanth所示那样访问该字典并添加新元素。 - EdChum
3个回答

78

你可以做到这一点。

data[0]['f'] = var

6
如果“f”不存在,那么你会遇到一个键错误。 - Lawrence DeSouza
2
@LawrenceDeSouza 看一下这个示例代码:https://docs.python.org/3/tutorial/datastructures.html#dictionaries - cppxor2arr

19

我看到的一个可能的问题是您将JSON数据不按惯例放置在数组/列表对象中。我建议使用JSON的最常接受的形式,即:

test_json = { "a": 1, "b": 2}

一旦你这样做了,只需要以下这行代码就可以添加一个 JSON 元素:

test_json["c"] = 3

这将导致:

{'a': 1, 'b': 2, 'c': 3}

之后,您可以将该JSON添加回数组或列表中(如果需要的话)。


如果我想将3添加到b中怎么办? {'a': 1,'b': 2,3} 如何实现? - soBusted

6

另外,您还可以这样做:

iter(data).next()['f'] = var

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接