本文介绍了有什么聪明的方法可以将密钥传递给defaultdict的default_factory?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
一个类具有一个带有一个参数的构造函数:
A class has a constructor which takes one parameter:
class C(object):
def __init__(self, v):
self.v = v
...
在代码中的某处,对于字典中的值了解其键很有用.
我想将defaultdict与传递给新生儿默认值的键一起使用:
Somewhere in the code, it is useful for values in a dict to know their keys.
I want to use a defaultdict with the key passed to newborn default values:
d = defaultdict(lambda : C(here_i_wish_the_key_to_be))
有什么建议吗?
推荐答案
它很难被视为聪明-但子类化是您的朋友:
It hardly qualifies as clever - but subclassing is your friend:
class keydefaultdict(defaultdict):
def __missing__(self, key):
if self.default_factory is None:
raise KeyError( key )
else:
ret = self[key] = self.default_factory(key)
return ret
d = keydefaultdict(C)
d[x] # returns C(x)
这篇关于有什么聪明的方法可以将密钥传递给defaultdict的default_factory?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!