2015-10-31 50 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

相關問題