如何用Python的defaultdict初始化默认返回指定字典结构的映射?
如何用defaultdict初始化自定义默认值的字典
没问题!要实现你想要的效果,只需要给defaultdict传入一个能返回目标字典的可调用对象就行——因为defaultdict的核心就是靠这个工厂函数来生成默认值的。
两种实现方式:
1. 定义明确的工厂函数(可读性更好)
如果你的默认结构以后可能需要修改,或者想让代码更清晰,可以单独写一个函数:
from collections import defaultdict def create_default_component(): return {'in': [], 'out': [], 'degree': 0} component_map = defaultdict(create_default_component)
2. 用lambda简化代码(更紧凑)
如果默认结构很固定,用匿名函数lambda可以一行搞定:
from collections import defaultdict component_map = defaultdict(lambda: {'in': [], 'out': [], 'degree': 0})
验证效果
现在不管访问哪个不存在的键,都会自动生成你想要的字典:
print(component_map['component']) # 输出: {'in': [], 'out': [], 'degree': 0} print(component_map['new_component']) # 同样输出目标字典
为什么这能行?
defaultdict的工作逻辑是:当你访问一个不存在的键时,它会调用你传入的工厂函数(不管是自定义函数还是lambda),把返回值作为这个键的默认值存入字典,同时返回这个值——完美替代了你之前手动判断键是否存在再初始化的写法。
内容的提问来源于stack exchange,提问作者samuelbrody1249
相关产品推荐
相关产品推荐

