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

Python中如何添加指定数量的独立空字典到列表?

为什么[{}]*3会导致所有字典同步变化?怎么正确创建多个独立空字典的列表?

问题原因

这是Python里可变对象结合列表乘法机制的典型“坑”,我给你拆解清楚:

当你执行d = [{}]*3时,Python并没有生成3个独立的空字典。列表乘法的核心逻辑是重复原列表中元素的引用——原列表里只有一个空字典对象,所以新列表的三个元素其实都是指向同一个字典的“指针”。就像给同一个盒子贴了三张标签,不管你通过哪张标签修改盒子里的东西,另外两张标签对应的盒子内容自然也会跟着变。

看你给出的示例就能明白:

>>> d = [{}]*3
>>> d[0]["x"] = 43
>>> d
[{'x': 43}, {'x': 43}, {'x': 43}]

你通过d[0]修改的是那个唯一的字典,d[1]和d[2]只是这个字典的另外两个引用,所以它们显示的都是同一个字典的最新状态。

创建多个独立空字典的最佳方法

要让列表里的每个字典都是独立个体,你需要每次迭代都创建一个全新的空字典,最常用且简洁的方式是用列表推导式:

>>> d = [{} for _ in range(3)]
>>> d[0]["x"] = 43
>>> d
[{'x': 43}, {}, {}]

这里range(3)循环3次,每次都会执行{}生成一个新的空字典,所以列表里的三个元素是完全独立的对象,修改其中一个绝不会影响其他。

如果你想更明确地表达“创建新字典”的意图,也可以用dict()替代{},效果完全一致:

d = [dict() for _ in range(3)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:06:03