回答
>>> def f():
return 1
>>> a = defaultdict(f)
>>> a[1]
1
下面是使用lambda表达式的其它实现(从kindall):
>>> a = defaultdict(lambda: 1)
从文档:
函数int(),它总是返回零只是一个常量函数的特例。创建恒定功能的更快和更灵活的方式是使用itertools.repeat(),它可以提供任何恒定值(不只是零):
>>> def constant_factory(value):
... return itertools.repeat(value).next
>>> d = defaultdict(constant_factory('<missing>'))
>>> d.update(name='John', action='ran')
>>> '%(name)s %(action)s to %(object)s' % d
'John ran to <missing>'
我碰巧在最近的文档中已经读过,并且无法相信他们在使用'itertools.repeat()'的时候会建议使用'lambda'作为@gnibbler的建议。更简单,并且需要很少的开销 - 谈论矫枉过正... – martineau 2010-11-10 01:14:52
是的,我不确定。也许有一个性能增益,我会稍后测试 – Falmarri 2010-11-10 18:09:31
我很高兴看到一个无lambda替代方案。 – dividebyzero 2013-03-03 01:37:52
defaultdict(lambda: 1)
例如
>>> from collections import defaultdict
>>> a = defaultdict(lambda: 1)
>>> a["foo"] += 1
>>> a["foo"]
2
- 1. 参数类构造函数
- 2. 没有参数的构造函数或参数构造函数
- 3. 我可以在外部构造函数中为参数类型构建一个无参数构造函数吗?
- 4. C++中另一个类的构造函数参数中的类参数
- 5. 获取类的构造函数参数
- 6. C++中一个类的构造函数中的不同参数
- 7. 声明一个具有类构造函数作为函数参数的函数
- 8. 一类的构造函数
- 9. 无参数构造函数调用2参数构造函数
- 10. winsdor注册一个泛型类型构造函数的参数
- 11. 如何测试一个case类构造函数的参数?
- 12. DatabaseException:类缺少一个没有参数的构造函数
- 13. 第一类函数的函数构造
- 14. 构造函数的参数
- 15. Python类构造函数默认参数
- 16. 向量类构造函数参数
- 17. 在另一个类的构造函数中使用一个类作为参数
- 18. 有一个子类的构造函数
- 19. 创建一个类的构造函数
- 20. 构造函数中的多个参数
- 21. 为类提供一个参数构造函数
- 22. 用原始参数构造函数注册一个类型?
- 23. 两个构造函数与int和long参数在同一类
- 24. 实例化一个没有无参数构造函数的类型参数
- 25. C++一个类的默认构造函数调用另一个类的另一个默认构造函数
- 26. C++ - 构造函数,其中使用的参数基类'构造函数
- 27. 构造函数调用具有参数的构造函数
- 28. swiftsuspenders构造函数参数?
- 29. 无参数构造函数
- 30. 从构造函数参数
或'一个= defaultdict(lambda:1)' – kindall 2010-11-10 00:13:10