2016-06-14 2 views
1

functools.partial을 사용하는 중에 문제가 발생했습니다.Python : functools.partial이 오류를 반환합니다.

내 코드 :

selected_words = ['awesome', 'great', 'fantastic', 'amazing', 'love', 'horrible', 'bad', 'terrible', 'awful', 'wow', 'hate'] 

def awsome_count(x,i): 
    if selected_words[i] in x: 
     y=1 
    else: 
     y=0 
    return y 

partialfun=functools.partial(awsome_count,0) 

partialfun(products[2]['word_count']) 

products가 SFrame이다.

오류 : 나는 partial 기능을 사용하고

TypeError         Traceback (most recent call last) 
<ipython-input-108-e51348a5d1f0> in <module>() 
----> 1 partialfun(products[2]['word_count']) 

<ipython-input-66-9ba8c7128add> in awsome_count(x, i) 
     1 def awsome_count(x,i): 
----> 2  if selected_words[i] in x: 
     3   y=1 
     4  else: 
     5   y=0 

TypeError: list indices must be integers, not dict 

내가 apply 기능을 사용하고자하기 때문이다 : 당신은 당신의 partial() 객체를 준

products['word_count'].apply(functools.partial(awsome_count,0) 

답변

3

을 하나 위치 인수 :

functools.partial(awsome_count, 0) 

해당 인수가 적용됩니다. 처음으로; 추가 위치 인수는 전화, 그래서 하나에 추가됩니다

partialfun(products[2]['word_count']) 

가된다 : 함수에 대한 잘못된 순서로입니다

awesome_count(0, products[2]['word_count']) 

합니다. 당신이 당신의 함수의 i 인수에 대한 기본 값을 적용 할 경우

가 대신 위치 인수의 키워드 인수를 사용

partialfun = functools.partial(awsome_count, i=0) 

지금 전화 partialfun(products[2]['word_count'])이된다

awsome_count(products[2]['word_count'], i=0) 
+0

이봐, 대답은 확실히 도움이됩니다. 내가 지금 투표를 잘못했는지 여부는 확실하지 않습니다. 미안합니다. – alan

+0

125 점 이상이 될 때까지 downvote 할 수 없으므로 걱정할 필요가 없습니다. :-) –

관련 문제