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

列表内defaultdict索引问题:如何向单个字典追加元素

问题根源与解决方法

这是因为你创建列表的方式踩了Python可变对象的坑![defaultdict(list)] * (2)并没有生成两个独立的defaultdict实例——它只是把同一个defaultdict对象的引用重复了两次。所以不管你通过dicty[0]还是dicty[1]操作,本质上都是在修改同一个字典,这就导致了两个“看起来独立”的字典同时变化。


正确的列表创建方式

要生成包含独立defaultdict实例的列表,你需要用列表推导式,每次循环都创建一个新的defaultdict:

from collections import defaultdict

# 正确写法:每次迭代都会生成新的defaultdict
dicty = [defaultdict(list) for _ in range(2)]

验证索引操作

现在再执行你想要的追加操作:

dicty[0][0].append('abc')

此时打印dicty,结果会是:

[defaultdict(list, {0: ['abc']}), defaultdict(list, {})]

只有第一个字典被修改,完全符合你的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:44:59