defaultdict使用lambda异常排查:无法正确返回d["c"]默认值
问题排查与修复
你的问题出在defaultdict的默认工厂函数定义上:
defaultdict要求传入的默认工厂函数是无参数的,当访问不存在的键时,它会直接调用这个函数生成默认值,不会传递任何参数- 你写的
lambda c: "Not Present"定义了一个需要接收1个参数的匿名函数,当d["c"]被访问时,defaultdict尝试调用这个lambda但没有传参,会触发TypeError
修复后的代码
from collections import defaultdict # 去掉lambda的参数,改为无参形式 d = defaultdict(lambda: "Not Present") d["a"] = 1 d["b"] = 2 print(d["a"]) print(d["b"]) print(d["c"])
运行结果
1 2 Not Present
内容的提问来源于stack exchange,提问作者LAKSHMAN GOPI
相关产品推荐
相关产品推荐

