需要创建一个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
答案 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__)