2016-12-18 9 views
0

すでにキーが存在するかどうかテストした後、辞書にいくつかのキーを追加しようとしています。しかし、私はTypeError "argument of type 'type' not iterableを取得するたびに、テストを行うことができないようです。タイプ 'type'のTypeError引数が「iterable」でないのはなぜですか?

これは基本的に私のコードです:

dictionary = dict 
sentence = "What the heck" 
for word in sentence: 
     if not word in dictionary: 
      dictionary.update({word:1}) 

私もif not dictionary.has_key(word)を試みたが、それはどちらか動作しませんでしたので、私は本当に混乱しています。

答えて

4

あなたのエラーはここにある:

型オブジェクト dict、ない空の辞書への参照を作成し
dictionary = dict 

。 (あなたはまた、(空の辞書を生成するタイプの呼び出し)dict()を使用している可能性が

dictionary = {} 

が、{}構文が好ましい:代わりに

>>> 'foo' in dict 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: argument of type 'type' is not iterable 

使用{}:その型のオブジェクトは、実際に反復可能ではありません1つのコードで視覚的にスキャンする方が速くて簡単です)。

forループにも問題があります。

>>> for word in "the quick": 
...  print(word) 
... 
t 
h 
e 

q 
u 
i 
c 
k 

あなたは言葉を望んでいた場合、あなたはstr.split()で空白に分割することもできます:

for word in sentence.split(): 
+0

ます。また、forループを変更することがあり、文字列はあなたに個々の文字を与えるようない言葉は、以上のループ文章ではなく、文章の上にループする。 –

+0

@MarkBakker:を付け加えた。 –

+0

@ MarkBakker:しかし、それは示唆された編集である必要はありませんでした。それは質問のコメントに残っていた可能性がありますが、ここの投稿の焦点は正確なエラーメッセージです。 –

関連する問題