Effective Python:(14)
Effective Python提供90条高效编程的技巧和建议。
这是本书第17条,是对上一条字典技巧的一个简单有趣的补充。
上一条中介绍了字典中如果处理不存在的key的几种方法,终极大法是用setdefault方法搞定。
这一条中作者反而不建议用setdefault,建议直接用Python内置collection模块中的defaultdict类,其可以自动完成上述所有操作,完美处理该问题。
Effective Python:(15)
Effective Python提供90条高效编程的技巧和建议。
这是本书第18条,是对上一条和再上一条字典技巧的又一个有效和有趣的补充。
根据前两条对于需要处理key是否存在的字典运用中,可以用in,KeyError异常来处理,进一步优化为用get带默认值处理,再进一步优化为可以用setdefault方法和直接用defaultdict字典解决。
但是如果对于key对应的值还需要通过一些操作才能获取的情况下,setdefault和defaultdict都存在问题,就是导致对键值的操作重复处理,而且由于多个操作复合在一条语句,如果操作中出现异常则无法判断是在哪里出的异常,会带来麻烦。
针对这种情形,python给出一个在dict派生类里内置的__missing__函数,专门用来处理当键值不存在时的默认值处理操作,从而我们可以通过派生我们自己的dict类来自定义编写missing函数来解决上面问题。
653

被折叠的 条评论
为什么被折叠?



