功能集合.defaultdict返回一个默认值,如果字典中没有键,则可以由我自己生成的lambda函数定义该值。在
现在,我希望我的defaultdict返回未修改的键值,如果该键值不存在的话。 因此,我使用一个lambda标识函数lambda x:x。在
>>>translation=defaultdict(lambda x:x)
>>>translation['Haus']='maison'
>>>translation['computer']='ordinateur'
>>>translation['computer']
'ordinateur'
然而,当我给我的defaultdict提供一个至今没有的密钥时:
^{pr2}$我希望defaultdict翻译返回“email”。然而,Python2.7指出:
TypeError: <lambda>() takes exactly 1 argument (0 given)
我肯定在做傻事。但是什么?在
不幸的是,用于定义default dict中缺少的键的factory函数没有参数-也就是说,与看起来明显不同的是,它没有传递实际缺少的键。在
因此,您无法知道所尝试的密钥是使用此方法的。在
另一种方法是自己子类
dict
(而不是使用DefaultDict),并添加一个__missing__
方法:每当试图检索不存在的密钥时,都会调用该方法,然后您可以自由地返回接收到的密钥:相关问题 更多 >
编程相关推荐