复制 json 对象并添加到主 json 对象,如果键有多个值

dtc348

我有 JSON 数据,其中某些键具有多个值。我想复制一份 json 正文并将其添加到主 json 中。

例如,在 my 中given.json,number 分别有两个值 156 和 158。我想复制并添加它,请看我的expected.json结果。

给定的.json

[{"fields": {"Start": "yes1",
   "number": [156, 158],
   "time": 1600,
   "total": 8}}]

预期.json

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]

Python

import json

# Opening JSON file
f = open('given.json',)

# returns JSON object as
# a dictionary
main_data = json.load(f)

my_dict = []

main_data[0]["fields"]["number"] = 156
main_data_1 = []
main_data_1.append(main_data)
my_dict.append(main_data_1)

main_data[0]["fields"]["number"] = 158
main_data_2 = []
main_data_2.append(main_data)

my_dict.append(main_data_2)

print(my_dict)
马蒂诺

您似乎对字典和列表感到困惑。json.load()可以返回其中之一,在这种情况下它将是一个列表(其中只有一个元素,即字典)。

在下面的代码中,第二个元素是第一个元素的副本,然后根据每个元素进行修改。副本是“深副本”,因此字典副本中的值都是独立的。

from copy import deepcopy
import json
from pprint import pprint

with open('given.json') as f:
    main_data = json.load(f)

numbers = main_data[0]["fields"]["number"]
main_data = [deepcopy(main_data[0]) for _ in numbers]

for i, number in enumerate(numbers):
    main_data[i]["fields"]["number"] = [number]

pprint(main_data, sort_dicts=False)

输出:

[{'fields': {'Start': 'yes1', 'number': [156], 'time': 1600, 'total': 8}},
 {'fields': {'Start': 'yes1', 'number': [158], 'time': 1600, 'total': 8}}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章