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

Python如何合并3个等长列表生成指定格式的字典列表

实现方法

三个列表的元素是按索引严格一一对应的,同一下标位置的名称、数量、单位刚好组成目标结构里的单条数据,核心就是按位置配对元素、按要求的嵌套结构组装即可,下面给几种常用实现:


方法1:基础索引循环(新手易理解)

直接通过索引遍历,逻辑最直白,适合刚接触循环的场景:

name_list = ["potatoes", "milk", "butter"]
quant_list = [500, 200, 40]
unit_list = ["g", "ml", "g"]

target_list = []
# 三个列表长度一致,取任意列表长度作为遍历范围即可
for idx in range(len(name_list)):
    single_item = {
        "name": name_list[idx],
        "quant_units": {
            "amount": quant_list[idx],
            "unit": unit_list[idx]
        }
    }
    target_list.append(single_item)

方法2:zip并行遍历(更推荐的常规写法)

用Python内置的zip()函数可以直接把多个列表同位置的元素打包,不需要手动维护索引,代码更简洁,也不容易出现索引写错的问题:

target_list = []
for name, amount, unit in zip(name_list, quant_list, unit_list):
    target_list.append({
        "name": name,
        "quant_units": {
            "amount": amount,
            "unit": unit
        }
    })

方法3:列表推导式(最简写法)

如果追求代码简洁,可以直接用列表推导式完成组装:

target_list = [
    {
        "name": name,
        "quant_units": {"amount": amount, "unit": unit}
    }
    for name, amount, unit in zip(name_list, quant_list, unit_list)
]

注意事项

以上方法默认三个列表长度完全一致,如果你的业务场景里存在列表长度不匹配的可能,可以在转换前加一行校验,避免数据遗漏:

# 长度不一致时直接抛出错误,方便排查问题
if not (len(name_list) == len(quant_list) == len(unit_list)):
    raise ValueError("三个输入列表的长度必须一致")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:51:21