首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: functools.partial返回错误

Python: functools.partial返回错误
EN

Stack Overflow用户
提问于 2016-06-14 06:50:51
回答 1查看 770关注 0票数 1

我在使用functools.partial时遇到了一个问题。

我的代码:

代码语言:javascript
复制
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。

错误:

代码语言:javascript
复制
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函数:

代码语言:javascript
复制
products['word_count'].apply(functools.partial(awsome_count,0)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-14 06:59:35

您为partial()对象提供了一个位置参数:

代码语言:javascript
复制
functools.partial(awsome_count, 0)

该参数应用于first;向该参数添加了其他位置参数,因此您的调用:

代码语言:javascript
复制
partialfun(products[2]['word_count'])

变成:

代码语言:javascript
复制
awesome_count(0, products[2]['word_count'])

这对你的功能来说是错误的顺序。

如果要为函数的i参数应用默认值,请使用关键字参数而不是位置参数:

代码语言:javascript
复制
partialfun = functools.partial(awsome_count, i=0)

现在调用partialfun(products[2]['word_count'])变成

代码语言:javascript
复制
awsome_count(products[2]['word_count'], i=0)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37804866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档