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

Python使用zip从两个列表创建字典出现非预期结果问题求解

第一种写法失效的原因

[{}] * len(day_list)的执行逻辑是先创建1个空字典对象,再把这个对象的引用重复N次(N为day_list的长度)生成列表,因此列表中的所有元素都指向同一个内存地址的字典实例。
将这个列表作为value和key列表打包生成字典后,所有key对应的value都共享同一个字典对象,任意修改其中一个value的内容,所有value都会同步更新,就会出现你观察到的所有值都等于最后一次赋值结果的问题。

推荐的Pythonic实现方式

最简洁直观的方案是使用字典推导式实现,每次循环都会独立创建新的空字典,不存在引用复用的问题:

day_list = list(range(1,4))
days = {day: {} for day in day_list}

如果偏好使用zip方法实现,可以将原来的列表重复写法替换为生成器表达式,每次迭代都会生成新的空字典:

days = dict(zip(day_list, ({} for _ in day_list)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:18:03