为什么vocabulary[feature]
要扔'int' object is not callable.
?
代码如下:
vocabulary = defaultdict(None)
vocabulary.default_factory = vocabulary.__len__()
j_indices = []
analyzed = ['foo', 'bar', 'baz', 'foo', 'quux']
for feature in analyzed:
j = vocabulary[feature]
print('%s %d' % (feature, j))
j_indices.append(j)
这是因为您在调用时分配函数的结果。试一试:
vocabulary.default_factory = vocabulary.__len__() # Returns an int
vocabulary.default_factory = vocabulary.__len__ # The function
vocabulary = defaultdict(None)
vocabulary.default_factory = vocabulary.__len__()
您将vocabulary
的工厂设置为0。所以当它找不到analyzed
中的第一个元素时,它给你的是0,当然它没有索引能力。
如果defaultdict
的default_factory
被设置为int型,例如vocabulary.__len__()
(相当于len(vocabulary)
),那么defaultdict将尝试使用给定的键调用该int型,这将导致您的错误,'int' object is not callable
。
也许你想要default_factory
被设置为方法,vocabulary.__len__
,而不是它的结果?