TypeError :(“'list'对象不可调用”,“发生在索引0”)

时间:2020-02-19 12:00:49

标签: python pandas numpy machine-learning

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跟踪(最近的呼叫 最后)

〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ frame.py在apply(self, func,axis,broadcast,raw,reduce,result_type,args,** kwds)6911 kwds = kwds,6912​​) -> 6913 return op.get_result()6914 6915 def applymap(self,func):

〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ apply.py在get_result()中 184返回self.apply_raw() 185 -> 186返回self.apply_standard() 187 188 def apply_empty_result():

〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ apply.py在 apply_standard(个体) 290 291#使用系列生成器计算结果 -> 292 self.apply_series_generator() 293 294#包装结果

〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ apply.py在 apply_series_generator(个体) 319尝试: i,v中的320枚举(series_gen): -> 321个结果[i] = self.f(v) 322个key.append(v.name) 323例外,例如e:

in(x)

在replace_tfidf_words(x, transformd_file,功能) 24''' 25字典= create_tfidf_dictionary(x,transformd_file,features) ---> 26个返回列表(map(lambda y:dictionary [f'{y}'],x.title.split()))

TypeError :(“'list'对象不可调用”,“发生在索引0”)

我是python的新手,请帮助我解决此错误。

1 个答案:

答案 0 :(得分:1)

这是一个常见错误,通常会在为名为import React from 'react'; import { Authenticator, ConfirmSignIn, SignIn } from 'aws-amplify-react'; import Amplify, { Auth } from 'aws-amplify'; import awsconfig from './aws-exports'; Amplify.configure(awsconfig); const getSearchParams = () => window.location.search.substr(1); const getValueFromSearchParam = (key) => new URLSearchParams(getSearchParams()).get(key); const getRedirectUri = () => { const redirect_uri = getValueFromSearchParam('redirect_uri'); return redirect_uri ? decodeURI(redirect_uri) : null; }; const Login = () => { const handleAuthStateChange = (state) => { if(state === 'signedIn') { const redirect_uri = getRedirectUri(); const state = getValueFromSearchParam('state'); if(redirect_uri === null) { throw new Error('No redirect_uri provided'); } Auth.currentSession().then(currentSession => { const id_token = currentSession.idToken.jwtToken; const access_token = currentSession.accessToken.jwtToken; const redirect = `${redirect_uri}#access_token=${access_token}&id_token=${id_token}&state=${state}`; window.location.replace(redirect); }).catch(err => console.error(err)); } }; return ( <Authenticator hideDefault={true} onStateChange={handleAuthStateChange} > <SignIn /> <ConfirmSignIn/> </Authenticator> ); }; 的变量设置一些值时发生。考虑下面的代码:

list

在第一行,我们为名为list = [1+1, 2-4, 3*2] values = list(1) 的变量分配一个值。那是很直观的,因为,如果我们有一个 list ,为什么不将其放在名为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) 变量上具有的值,并可以帮助您确定更改的位置。

无论哪种方式,您都必须在已发布给我们的摘录之外进行搜索,这可能是一个挑战。