Продолжайте получать TypeError: объект 'list' не вызывается - PullRequest
0 голосов
/ 23 февраля 2019

Я не уверен, где моя ошибка, но вот код, где я получил ошибку от index = plottest(doc):

for doc in plottest:

    for word in wordsunique:

        if word in doc:
            word = str(word)
            index = plottest(doc)
            positions = list(np.where(np.array(index) == word)[0])
            idfs = tfidf(word,doc,plottest)

            try:
                worddic[word].append([index, positions, idfs])
            except:
                worddic[word] = []
                worddic[word].append([index, positions, idfs])

1 Ответ

0 голосов
/ 24 февраля 2019

Как сказал @Robin Zigmond в комментарии, вы пытаетесь вызвать список, как если бы вы вызывали функцию, используя синтаксис (...).Следующее:

>>> def f(x): return 2*x
... 
>>> f(2)
4

отличается от:

>>> L=[1,2,3]
>>> L(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

Последнее не работает, поскольку [1,2,3] не вызывается. Документация Python перечисляет вызываемые типы:

  • Пользовательские функции
  • Методы экземпляра
  • Функции генератора
  • Функции сопрограмм
  • Функции асинхронного генератора
  • Встроенные функции
  • Встроенные методы
  • Классы
  • Экземпляры классов: Экземплярыпроизвольные классы могут быть вызваны путем определения метода __call__() в их классе.

Список (то есть экземпляр list) не является ни одним из них, поскольку класс listне имеет __call__() method:

>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

В вашем примере первые строки утверждают, что plottest является итеративным.Ошибка показывает, что это список.И вы пытаетесь назвать это с index = plottest(doc).Я предполагаю, что вы хотите получить индекс doc в plottest.Чтобы достичь этого в Python, вы можете написать:

for index, doc in enumerate(plottest):
    ...

Надеюсь, это поможет!

...