2015-10-31 72 views
-1

我正在学习如何知道Python字典的工作方式,并正在编写一个小程序来知道单词count列中的单词awesome,那么它应该返回给我价值。Python错误:TypeError:类型'type'的参数不可迭代

但是,它给我以下错误:

TypeError: argument of type 'type' is not iterable 

word_count列是象下面这样:再经过

def awesome_count(self): 
    if 'awesome' in dict: 
     return dict['awesome'] 
    else: 
     return 0 

{'and': 5, 'stink': 1, 'because': 2} 
{'awesome': 3, 'bad': 2} 
{'mac': 5, 'awesome': 1} 

我创造了这个功能,我正在使用apply函数来获取计数,但得到一个错误:

products['awesome'] = products['word_count'].apply(awesome_count) 

需要下列答案:

0,3,1 i.e number of times awesome is present 
+0

'如果'真棒'在字典:返回字典['真棒']'在哪里定义的字典? –

+0

我是否需要将dict作为参数传递给函数?并回答你的问题,字典不是在任何地方定义的。 – user4943236

+1

它需要定义。看起来这个函数是一个类的一部分,并作用于对象本身?然后'dict'应该是你想要看的你班级的成员。 –

回答

2

我不知道如果我得到你的想法,但我注意到两件事:

  1. 您必须缩进函数的主体以标记它的开始和结束。如果你输入你在这里所做的方式,Python应该会给你一个错误。

  2. 你从值products['soemthing']中调用apply方法,这在我看来是一个整数值,所以它没有'apply'方法。您收到的TypeError告诉您调用适用于可迭代对象,如不在整数上的列表。

建议:如果你只是想编写一个返回与awesome在字典中有关联的值函数写

def awesome_count(dict): 
    if 'awesome' in dict: 
     return dict['awesome'] 
    return 0 

然后直接调用这个函数来您的字典。

+0

这个工作,你钉了这个。 :) – user4943236

1

如果products['word_count']dict一个list,试试这个:

products = {} 
products['word_count'] = [{'and': 5,'stink': 1, 'because': 2}, 
          {'awesome': 3, 'bad': 2}, 
          {'mac': 5, 'awesome': 1}] 

products['awesome'] = [d.get('awesome',0) for d in products['word_count']] 
+0

感谢您的回答。我是否可以知道是否将函数定义从'def awesome_count(self):'更改为'def awesome_count(dict):'它如何影响函数?你能帮我清理这个概念 – user4943236

相关问题