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

如何将列表元素按索引添加至另一列表的对应字典中?

正确实现值列表与字典列表按索引配对添加的方法

你之前得到n*n个字典的原因是在推导式里嵌套了两层遍历(同时遍历所有字典和所有值),导致每个字典都和每个值组合了一次,自然生成了乘积数量的结果。下面是几种正确的实现方式:

方式一:生成新字典列表(不修改原数据)

使用zip()将两个列表对应位置的元素配对,再通过字典展开语法创建新字典:

my_values = ["A", "B", "C"]
my_dicts = [{"key1": 1}, {"key2": 2}, {"key3": 3}]

my_new_dicts = [{**d, "value": v} for d, v in zip(my_dicts, my_values)]

输出结果:

[{'key1': 1, 'value': 'A'}, {'key2': 2, 'value': 'B'}, {'key3': 3, 'value': 'C'}]

这种方式不会改动原my_dicts列表,适合需要保留原始数据的场景。

方式二:直接修改原字典列表

如果不需要保留原字典,可以通过索引遍历直接给每个字典添加键值对:

my_values = ["A", "B", "C"]
my_dicts = [{"key1": 1}, {"key2": 2}, {"key3": 3}]

# 方法1:按索引循环
for i in range(len(my_values)):
    my_dicts[i]["value"] = my_values[i]

# 方法2:用enumerate同时获取索引和值
for idx, val in enumerate(my_values):
    my_dicts[idx]["value"] = val

执行后my_dicts会直接变成目标格式。

注意事项

  • 确保my_values和my_dicts的长度一致,否则zip()只会处理到较短列表的长度,剩余元素会被忽略。如果需要严格校验,可以先添加长度判断:
    if len(my_values) != len(my_dicts):
        raise ValueError("值列表与字典列表长度必须匹配")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:44:54