2016-09-05 9 views
4

私はPythonにはかなり新しいですが、私は基本的なコマンドを知っています。私はfor文を作成しようとしています。これは、文のリストが与えられると、各文の長さのキーを追加します。forループを使って文字列長の辞書を構築するには?

dictionary = {length1:frequency, length2:frequency, etc.} 

が、私は特にこの問題に対処以前答えた質問を見つけるように見えることはできません。フォーマットは次のようになりますように、各キーの値は、リスト内のその文の長さの周波数になります - 基本機能を使用してキーを作成し、その結果の頻度でキーの値を変更します。

dictionary = {} 
for i in sentences: 
    dictionary[len(i.split())] += 1 

私は、コードを実行しようとすると、私はこのメッセージを得る:

Traceback (most recent call last): 
    File "<pyshell#11>", line 2, in <module> 
    dictionary[len(i.split())] += 1 
KeyError: 27 

私のコードと私が間違っていた場所の説明を固定すべてのヘルプはそうだろうここで私が持っているコードです。感謝!

sentences ='Hi my name is xyz' 
words = sentences.split() 
dictionary ={} 
for i in words: 
    if len(i) in dictionary: 
     dictionary[len(i)]+=1 
    else: 
     dictionary[len(i)] = 1 
print(dictionary) 

出力:

+0

実行しているPythonのバージョンは?私はこれまでにこのエラーを見たことがない。 –

+4

[SyntaxError:単一のステートメントをコンパイルする際に複数のステートメントが見つかりました]重複している可能性があります。(http://stackoverflow.com/questions/21226808/syntaxerror-multiple-statements-found-while-compiling-a-single-statement) –

+0

'エラーを再現するには、代わりに 'KeyError'を取得する必要があります。 –

答えて

2

私はこれは、Python 3に、あなたの問題を解決すると思い辞書で

{2: 3, 3: 1, 4: 1} 

を、最初にあなただけがそれを使用することができ、キーためにいくつかの値を割り当てる必要があります各キーにデフォルト値を割り当てる代わりにdefaultdictを使用することもできます。

これが役に立ちます。

+0

ありがとう、これは働いた! – boop

関連する問題