Python: functools.partial returns 错误
Python: functools.partial returns error
我在使用 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。
错误:
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
我正在使用partial
函数,是因为我想使用apply
函数:
products['word_count'].apply(functools.partial(awsome_count,0)
你给了你的partial()
对象一个位置参数:
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)
我在使用 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。
错误:
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
我正在使用partial
函数,是因为我想使用apply
函数:
products['word_count'].apply(functools.partial(awsome_count,0)
你给了你的partial()
对象一个位置参数:
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)