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

Python两个列表生成对应键值字典,双层循环推导式输出错误如何解决

问题原因

你写的字典推导式用了两层嵌套循环,本质是对a、b两个列表做笛卡尔积遍历:

  • 先遍历a取第一个键k=1,接着遍历整个b列表依次赋值v=1、v=2、v=3,字典的键唯一,重复赋值会覆盖旧值,所以k=1最终对应的值是b的最后一个元素3
  • 同理遍历k=2、k=3时,都会重复遍历整个b列表,最终都被赋值为3,就得到了你看到的输出结果。
正确实现方案

因为你需要的是两个列表相同位置的元素配对成键值对,直接用zip()函数按位置拼接两个列表即可,有两种常用写法:

  1. 直接用dict构造函数转换:
a = [1, 2, 3]
b = [1, 2, 3]
print(dict(zip(a, b)))
  1. 用推导式写法(适合需要对键值做额外处理的场景):
print({k: v for k, v in zip(a, b)})

两种写法的输出均为{1: 1, 2: 2, 3: 3},符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:00:05