类型错误:"int"对象在使用默认字典时不可调用



为什么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,当然它没有索引能力。

如果defaultdictdefault_factory被设置为int型,例如vocabulary.__len__()(相当于len(vocabulary)),那么defaultdict将尝试使用给定的键调用该int型,这将导致您的错误,'int' object is not callable

也许你想要default_factory被设置为方法,vocabulary.__len__,而不是它的结果?

相关内容

  • 没有找到相关文章

最新更新