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
相关产品推荐
相关产品推荐

