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

Python动态创建嵌套字典的更Pythonic实现方式求教

优化实现方案

注意不要使用dict作为变量名,这会覆盖Python内置的字典类型,导致后续调用内置字典方法时报错

以下是几种符合Pythonic规范的实现方式,按适用场景区分:

  • 无需导入依赖,使用内置setdefault方法
    适用于不想额外导入标准库,且后续需要给内层字典新增其他字段的场景:
person_dict = {}
persons = ('jack', 'jill', 'fido', 'spot')

for person in persons:
    person_dict.setdefault(person, {'count': 0})['count'] += 1

setdefault会自动判断键是否存在,不存在则写入默认的{'count':0},存在则直接返回对应的值,一行即可完成原代码的条件判断逻辑。

  • 使用collections.defaultdict处理嵌套结构
    适用于嵌套层级更深、动态生成结构更复杂的场景:
from collections import defaultdict

person_dict = defaultdict(dict)
persons = ('jack', 'jill', 'fido', 'spot')

for person in persons:
    person_dict[person]['count'] = person_dict[person].get('count', 0) + 1

defaultdict会在访问不存在的外层键时,自动生成你指定类型的默认值(这里是dict),无需手动判断键是否存在。

  • 仅统计计数场景,使用Counter+字典推导式
    如果你的需求只是统计每个元素的出现次数,再封装为嵌套字典结构,用这种方案代码量最少:
from collections import Counter

persons = ('jack', 'jill', 'fido', 'spot')
person_dict = {person: {'count': cnt} for person, cnt in Counter(persons).items()}

内容的提问来源于stack exchange,提问作者Charles Consumé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:01