回答
>>> 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