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

如何在Python 3中用两个嵌套列表生成字典列表?

实现方法说明

当然可以实现这个需求,不过先提个关键细节:你预期输出里的字典包含重复键(比如第一个字典里的两个90:2),但在Python中字典的键是唯一的——如果有重复的键,后面的键值对会自动覆盖前面的。所以实际生成的字典会合并重复键的条目,不过如果重复键对应的值相同,最终结果看起来和你预期的类似。

具体实现代码

用嵌套列表推导式结合zip()函数就能轻松完成:

list_1 = [[100, 90, 90, 85, 70], [100, 90, 90, 85, 80], [105, 100, 90, 90, 85]]
list_2 = [[1, 2, 2, 3, 4], [1, 2, 2, 3, 4], [1, 2, 3, 3, 4]]

# 生成目标嵌套字典列表
result = [dict(zip(sub_list1, sub_list2)) for sub_list1, sub_list2 in zip(list_1, list_2)]

print(result)

代码解释

  1. 外层的zip(list_1, list_2)会把两个大列表中对应位置的子列表配对,比如第一次配对的是list_1[0]和list_2[0],第二次是list_1[1]和list_2[1],以此类推。
  2. 内层的zip(sub_list1, sub_list2)会把每个子列表里的元素一一对应配对,生成类似(100, 1)、(90, 2)这样的元组。
  3. dict()函数会把这些元组转换成字典,自动处理重复键:如果有相同的键,只会保留最后一次出现的键值对(如果值相同,结果和你预期的一致;如果值不同,后面的值会覆盖前面的)。

实际输出结果

运行上面的代码,你会得到:

[{100: 1, 90: 2, 85: 3, 70: 4}, {100: 1, 90: 2, 85: 3, 80: 4}, {105: 1, 100: 2, 90: 3, 85: 4}]

可以看到,重复的90键被合并了,但因为对应的值相同,所以和你预期的效果一致。如果你的场景中重复键对应的值可能不同,需要保留所有键值对的话,建议改用元组组成的列表(比如[(100,1), (90,2), (90,2), ...]),因为字典无法存储重复键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:14:38