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

如何使用Python将三个列表转换为指定结构的JSON数据

没问题,这需求很明确,咱们用Python的基础操作就能轻松实现,给你两种实用的方案:

方案1:循环切片构建字典

这种方式逻辑清晰,适合新手理解每一步的操作:

import json

# 你的输入数据
a = ["a","b","c"]
b = ["m","n","o","p"]
c = [1,2,3,4,"z","y","x","w","aa","ab","ac","ad"]

# 每个顶级键对应的子字典元素数量,也就是列表b的长度
chunk_size = len(b)
result = {}

# 遍历列表a的每个元素,同时获取它的索引
for idx, top_key in enumerate(a):
    # 计算当前顶级键对应列表c的切片范围
    start_idx = idx * chunk_size
    end_idx = start_idx + chunk_size
    # 把列表b和对应的c切片配对成子字典,存入结果
    result[top_key] = dict(zip(b, c[start_idx:end_idx]))

# 转换为格式化的JSON字符串
json_output = json.dumps(result, indent=4)
print(json_output)

这段代码的核心是用enumerate拿到列表a的索引,然后通过索引计算列表c的切片范围,再用zip把列表b和切片后的c元素一一对应,最后转成字典。

方案2:简洁的字典推导式

如果喜欢更紧凑的代码,用字典推导式可以一行搞定核心逻辑,代码更精炼:

import json

a = ["a","b","c"]
b = ["m","n","o","p"]
c = [1,2,3,4,"z","y","x","w","aa","ab","ac","ad"]

chunk_size = len(b)
# 用推导式直接生成结果字典
result = {
    top_key: dict(zip(b, c[i*chunk_size : (i+1)*chunk_size]))
    for i, top_key in enumerate(a)
}

# 转JSON并输出
json_output = json.dumps(result, indent=4)
print(json_output)

逻辑和方案1完全一致,只是把循环转换成了推导式,代码更简洁利落。

额外注意事项

为了避免数据不匹配的问题(比如列表c的长度不是列表a和b长度的乘积),可以在代码开头加个校验:

if len(c) != len(a) * len(b):
    raise ValueError("列表c的长度必须等于列表a的长度乘以列表b的长度,请检查输入数据!")

加上这个校验后,如果输入数据不符合要求,程序会直接抛出明确的错误提示,方便快速排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:03:10