TypeError:' int'使用defaultdict时,object不可调用

时间:2015-05-26 17:46:15

标签: python scikit-learn

为什么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)

3 个答案:

答案 0 :(得分:2)

这是因为您在调用时分配了函数的结果。尝试:

vocabulary.default_factory = vocabulary.__len__()  # Returns an int
vocabulary.default_factory = vocabulary.__len__    # The function

答案 1 :(得分:0)

vocabulary = defaultdict(None)
vocabulary.default_factory = vocabulary.__len__()

您在这里将vocabulary的工厂设置为数字零。因此,当它找不到analyzed中的第一个元素时,它会给你零,这当然没有索引功能。

答案 2 :(得分:0)

如果defaultdict的{​​{1}}设置为int,例如default_factory(相当于vocabulary.__len__()),则defaultdict尝试使用给定密钥,这将导致您的错误len(vocabulary)

也许您希望将'int' object is not callable设置为方法default_factory,而不是结果?