You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3遍历JSON数组:按Key聚合Value并生成指定格式输出

问题与解决方案

初始需求

有如下JSON数组:

"json_array": [
    {
        "key": "k1",
        "value": "v1"
    },
    {
        "key": "k2",
        "value": "v2"
    }
]

需要将其中的value以v1,v2的形式列出。

修改后的结构与当前问题

后续修改了JSON数组结构并编写了如下代码:

json_array = [
    [
        {
            "key": "k1",
            "value": "v1"
        },
        {
            "key": "k1",
            "value": "v2"
        }
    ],
    [
        {
            "key": "k1",
            "value": "v3"
        },
        {
            "key": "k2",
            "value": "v4"
        }
    ],
    [
        {
            "key": "k2",
            "value": "v5"
        },
        {
            "key": "k3",
            "value": "v6"
        }
    ]
]
itemcount = 0

for item in json_array:
    print(item)
    values = []
    
    for kv in item:
        if 'value' in kv:
                values.append(kv['value'])

    print(', '.join([kv['key']] + values))

当前代码输出:

[{'key': 'k1', 'value': 'v1'}, {'key': 'k1', 'value': 'v2'}]
k1, v1, v2
[{'key': 'k1', 'value': 'v3'}, {'key': 'k2', 'value': 'v4'}]
k2, v3, v4
[{'key': 'k2', 'value': 'v5'}, {'key': 'k3', 'value': 'v6'}]
k3, v5, v6

期望输出:

k1, v1, v2, v3
k2, v4, v5
k3, v6

实现逻辑与代码

核心思路是按key分组收集所有对应的value,步骤如下:

  1. 初始化一个空字典,用于存储每个key对应的value列表。
  2. 逐层遍历嵌套的JSON数组,取出每个键值对中的key和value。
  3. 将每个value追加到对应key的列表中。
  4. 遍历字典,按key + 逗号分隔的value列表格式输出。

对应Python代码:

json_array = [
    [
        {"key": "k1", "value": "v1"},
        {"key": "k1", "value": "v2"}
    ],
    [
        {"key": "k1", "value": "v3"},
        {"key": "k2", "value": "v4"}
    ],
    [
        {"key": "k2", "value": "v5"},
        {"key": "k3", "value": "v6"}
    ]
]

# 初始化字典用于分组存储key对应的values
key_values = {}

# 逐层遍历嵌套数组
for sub_array in json_array:
    for kv_pair in sub_array:
        key = kv_pair['key']
        value = kv_pair['value']
        # 如果key不在字典中,先创建空列表
        if key not in key_values:
            key_values[key] = []
        key_values[key].append(value)

# 按需求格式输出
for key, values in key_values.items():
    # 拼接key和所有values,用逗号分隔
    print(f"{key}, {', '.join(values)}")

运行后即可得到期望的输出:

k1, v1, v2, v3
k2, v4, v5
k3, v6

另外,针对最初的简单JSON数组(非嵌套),要得到v1,v2格式,代码可以简化为:

import json

# 假设原始JSON字符串
json_str = '''
{
    "json_array": [
        {"key": "k1", "value": "v1"},
        {"key": "k2", "value": "v2"}
    ]
}
'''

data = json.loads(json_str)
values = [item['value'] for item in data['json_array']]
print(', '.join(values))

输出结果:v1, v2

内容的提问来源于stack exchange,提问作者deadshotpro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:22:55