我有 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] 删除。
我来说两句