defaultdict能在缺失键被索引访问时创建默认值。于是一个看似读取的表达式,也可能改变容器内容;如果只想查询是否存在,需要选对访问方式。

索引访问会调用默认工厂
示例使用defaultdict(list)。访问groups["A"]时不存在A,就创建一个新列表并保存到字典中。这适合按类别追加数据,但如果只是探测大量未知名称,可能留下原本不想建立的空条目。
get不会触发同样的创建
groups.get("B")沿用普通字典语义,未提供默认值时返回None,并不会调用默认工厂。B是否存在也可以用成员判断。不要把get返回None与已经创建空列表当成同一结果。
检查内容变化而不只看返回值
下面在每一步核对键是否进入字典,展示索引与get的差别。真实程序若依赖字典条目数做统计,应留意这些隐式创建;选择容器时让读写行为符合预期。示例不访问外部资料。
可以运行的练习
from collections import defaultdict
groups = defaultdict(list)
assert groups.get("B") is None
assert "B" not in groups
assert groups["A"] == []
assert "A" in groups
groups["A"].append(1)
assert dict(groups) == {"A": [1]}
print(dict(groups))
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
Python:defaultdict与缺失键。资料查阅日期:2026年10月8日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年10月8日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






