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

Python中defaultdict递归tree函数含义及无自定义函数实现方法

问题解答

原代码含义

你提供的第一段代码实现了支持自动创建嵌套层级的字典结构,也叫自动生存(autovivification)字典:

  • collections.defaultdict的特性是接收一个默认工厂函数作为参数,当访问不存在的键时,会自动调用该工厂函数生成默认值赋值给对应键,不会抛出KeyError。
  • 自定义的tree函数返回值为defaultdict(tree),相当于每个层级的默认值都是一个新的、同样以tree为默认工厂的defaultdict,以此实现无限层级的自动嵌套,你可以直接写类似t['level1']['level2']['level3'] = 123的代码,不需要提前逐层创建父级字典。

无需自定义def函数的实现方案

你写的t = defaultdict()没有传入默认工厂参数,访问不存在的键时还是会触发KeyError,自然达不到预期效果。不需要用def声明自定义函数的话,可以用lambda匿名函数实现完全一致的效果:

from collections import defaultdict
tree = lambda: defaultdict(tree)
t = tree()

如果连单独给匿名函数赋值的步骤都想省略,可以直接写成一行:

from collections import defaultdict
t = defaultdict(lambda: defaultdict(lambda.__code__.co_consts[0]))

两种写法都和你最初的自定义函数版本效果完全一致,支持任意层级的嵌套键自动创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:27:03