Python defaultdict,字符串作为值的类型

时间:2016-04-29 23:16:29

标签: python

需要创建一个defaultdict,值类型是普通的Python字符串,看来我的下面的方法不起作用?发布编译错误消息。使用Python 2.7并想知道如何修复任何好主意?感谢。

代码

import collections

a = collections.defaultdict("")

a[1]="Hello"
a[2]="World"

print a

错误消息

  a = collections.defaultdict("")
TypeError: first argument must be callable

2 个答案:

答案 0 :(得分:11)

正如错误所说,第一个参数必须是一个可调用的,它产生你想要的值。使用str

a = collections.defaultdict(str)

如有必要,您可以使用lambda函数创建包装器:

a = collections.defaultdict(lambda: 'initial')

答案 1 :(得分:3)

没错。你有一个字符串的实例而不是返回字符串的东西。你想要的是collections.defaultdict(str)。这是因为str()返回""。你可能已经发现了这种类型:

>>> type("")
<class 'str'>

因此,如果你不知道班级的名字,你可以这样做:

a = collections.defaultdict(type(""))

a = collections.defaultdict("".__class__)