【发布时间】:2013-10-24 07:24:31
【问题描述】:
我正在尝试做类似的事情:
from collections import defaultdict
import hashlib
def factory():
key = 'aaa'
return { 'key-md5' : hashlib.md5('%s' % (key)).hexdigest() }
a = defaultdict(factory)
print a['aaa']
(实际上,我需要访问工厂中的密钥的原因不是为了计算md5,而是出于其他原因;这只是一个例子)
如您所见,在工厂中我无法访问密钥:我只是在强制它,这没有任何意义。
是否可以以我可以在工厂访问密钥的方式使用defaultdict?
【问题讨论】:
-
出于好奇,为什么需要
defaultdict,只是为了纠正缺失值吗?因为除了返回{}之外,这就是它所做的一切? -
是的,它是为字典中缺少的键提供值。这就是
defaultdict的全部意义,不是吗?问题是我存储在 defaultdict 中的(真实)数据结构具有取决于键的字段。因此,每当我试图访问一个不存在的元素时,我需要在工厂中使用defaultdict的键作为参数来创建它。 -
害怕你做的事情比平常多一点。请参阅@falsetru 的解决方案,因为这是我在自定义构建字典使用的情况下向您建议的:)
标签: python python-2.7 dictionary defaultdict