作为 Python 程序的一部分,我想合并包含相同结构化数据的 JSON 对象。例如:
{
"responseStatus": "SUCCESS",
"responseDetails": {
"total": 5754,
},
"data": [
{
"id": 1324651
},
{
"id": 5686131
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将我的section对象的数据数组的内容添加到我的第一个对象的数据数组中。
所以,假设:
thejson1 = json.loads({"responseStatus": "SUCCESS","responseDetails": {"total": 5754,},"data": [{"id": 1324651},{"id": 5686131}]})
thejson2 = json.loads({"responseStatus": "SUCCESS","responseDetails": {"total": 1234,},"data": [{"id": 2165735},{"id": 2133256}]})
Run Code Online (Sandbox Code Playgroud)
我认为执行:
thejson1["data"].append(thejson2["data"])
Run Code Online (Sandbox Code Playgroud)
将 thejson1 扩展为:
{
"responseStatus": "SUCCESS",
"responseDetails": {
"total": 5754,
},
"data": [
{
"id": 1324651
},
{
"id": 5686131
},
{
"id": 2165735
},
{
"id": 2133256
}
]
}
Run Code Online (Sandbox Code Playgroud)
但它所做的是将json2数据作为数组添加到json1的数据数组中:
{
"responseStatus": "SUCCESS",
"responseDetails": {
"total": 5754,
},
"data": [
{
"id": 1324651
},
{
"id": 5686131
},
[
{
"id": 2165735
},
{
"id": 2133256
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
那么,我做错了什么?看起来 append 添加了第二个 JSON 对象的数据数组而不是其内容,但请注意,我无法事先知道我的 JSON 输入中“数据”数组的内容,因此我无法编写专门的代码在“id”对象中循环以将它们一一添加。
提前致谢!
R。
您正在寻找extend,而不是append。
thejson1["data"].extend(thejson2["data"])
Run Code Online (Sandbox Code Playgroud)
append接受单个参数并将其插入到末尾。尽管extend 延长通过在参数列表的末尾添加的所有个体值的列表。
# example:
a=[1, 2, 3]
b = a[:].append([4, 5])
# b = [1, 2, 3, [4, 5]]
c = a[:].extend([4, 5])
# c = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10369 次 |
| 最近记录: |