TypeError: («объект« list »не может быть вызван», «произошел с индексом 0») - PullRequest
0 голосов
/ 19 февраля 2020
def create_tfidf_dictionary(x, transformed_file, features):

    vector_coo = transformed_file[x.name].tocoo()
    vector_coo.col = features.iloc[vector_coo.col].values
    dict_from_coo = dict(zip(vector_coo.col, vector_coo.data))
    return dict_from_coo

def replace_tfidf_words(x, transformed_file, features):

    dictionary = create_tfidf_dictionary(x, transformed_file, features)   
    return list(map(lambda y:dictionary[f'{y}'], x.title.split()))
%%time
replaced_tfidf_scores = file_weighting.apply(lambda x: replace_tfidf_words(x, transformed, features), axis=1)

во время выполнения этого кода у меня появляется следующая ошибка.

TypeError Traceback (последний последний вызов) в

~ \ Anaconda3 \ lib \ site-packages \ pandas \ core \ frame.py in apply (self, fun c, ось, широковещание, необработанное, уменьшение, тип_результата, аргументы, ** kwds) 6911 kwds = kwds, 6912) -> 6913 return op.get_result () 6914 6915 def applymap (self, fun c):

~ \ Anaconda3 \ lib \ site-packages \ pandas \ core \ apply.py в get_result (self) 184 вернуть self .apply_raw () 185 -> 186 return self.apply_standard () 187 188 def apply_empty_result (self):

~ \ Anaconda3 \ lib \ site-packages \ pandas \ core \ apply.py в apply_standard (self) ) 290 291 # вычислить результат с помощью генератора рядов -> 292 self.apply_series_generator () 293 294 # результаты переноса

~ \ Anaconda3 \ lib \ site-packages \ pandas \ core \ apply.py в apply_series_generator (self) 319 try: 320 для i, v в перечислении (series_gen): -> 321 результатов [i] = self.f (v) 322 keys.append (v.name) 323 за исключением исключения как e:

in (x)

в replace_tfidf_words (x, преобразованный_файл, функции) 24 '' '25 словарь = create_tfidf_dictionary (x, преобразованный_файл, функции) ---> 26 возвращаемых списков ( map (лямбда-у: словарь [f '{y}'], x.title.split ()))

TypeError: ("объект" list "не может быть вызван", "произошел с индексом 0")

Я новичок в python, пожалуйста, помогите мне с этой ошибкой.

1 Ответ

1 голос
/ 19 февраля 2020

Это распространенная ошибка, обычно это происходит, когда вы устанавливаете какое-либо значение для переменной с именем list. Рассмотрим код ниже:

list = [1+1, 2-4, 3*2]
values = list(1)

В первой строке мы присваиваем значение переменной с именем list. Это интуитивно понятно, потому что, если у нас есть список , почему бы не поместить его в переменную с именем list, верно? Однако во второй строке мы пытаемся вызвать функцию list(). Однако мы заменили значение переменной list, это уже не функция, а какая-то другая вещь. В результате получается ошибка:

Traceback (most recent call last):
  File "sl.py", line 3, in <module>
    values = list(1)
TypeError: 'list' object is not callable

В вашем примере ясно, что вы пытаетесь вызвать функцию в этой строке:

return list(map(lambda y:dictionary[f'{y}'], x.title.split()))

Задача состоит в том, чтобы найти место, которое вы назначаете значение переменной list. Как кто-то прокомментировал, вы можете найти подстроку list = в вашем коде и изменить имя переменной там на что-то отличное от list. Если вы нигде не найдете этот фрагмент, вы можете заменить

return list(map(lambda y:dictionary[f'{y}'], x.title.split()))

на

print(list)

Он покажет, какое значение у вас есть в переменной list, и может помочь вам выяснить, где это было изменено.

В любом случае вам придется искать за пределами фрагмента, который вы нам отправили, что может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...