欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Python 嵌套结构的defaultdict介绍

Python 嵌套结构的defaultdict介绍

2025/4/16 7:01:59 来源:https://blog.csdn.net/qq_27390023/article/details/147161760  浏览:    关键词:Python 嵌套结构的defaultdict介绍

在 Python 中,collections.defaultdict 是一个非常有用的数据结构,可以为字典提供默认值。嵌套的 defaultdict 则允许我们方便地构建多级(多层)结构,而无需手动检查键是否存在。

1. 基础语法:defaultdict

from collections import defaultdictd = defaultdict(list)
d['a'].append(1)
print(d)  # defaultdict(<class 'list'>, {'a': [1]})

你不需要检查 'a' 是否存在,defaultdict 会自动初始化为一个空的 list

2. 嵌套 defaultdict

常见的 二维嵌套结构

from collections import defaultdictnested_dict = defaultdict(lambda: defaultdict(list))nested_dict['1abc']['A__H1'].append('file1.pkl')
nested_dict['1abc']['A__H1'].append('file2.pkl')
nested_dict['2xyz']['B__L3'].append('file3.pkl')print(nested_dict)

创建了一个外层 defaultdict,其默认值是一个内层 defaultdict,内层 defaultdict 的默认值为一个空列表。

常见用法示例

✅ 1. 构建多层结构(类似 JSON):
from collections import defaultdict# 三层嵌套
tree = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))tree['human']['brain']['neurons'] = 100_000_000_000
tree['human']['heart']['beats_per_min'] = 72print(tree['human']['brain']['neurons'])  # 100000000000
2. 统计词频(按文档和单词):
docs = {"doc1": "hello world hello","doc2": "hello ai model",
}word_counts = defaultdict(lambda: defaultdict(int))for doc_id, text in docs.items():for word in text.split():word_counts[doc_id][word] += 1print(word_counts)
# defaultdict(<function ...>, {
#     'doc1': defaultdict(<class 'int'>, {'hello': 2, 'world': 1}),
#     'doc2': defaultdict(<class 'int'>, {'hello': 1, 'ai': 1, 'model': 1})
# })

注意事项

  • defaultdict 会在访问不存在的键时自动创建新元素,有时可能会误操作(比如意外创建多余的键)。

  • 可以使用 dict(nested_dict) 或 json.dumps(nested_dict) 将其转为普通结构,但需要先处理 defaultdict

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词