2017-09-29 3 views
-1

私はCounterなしで手紙の頻度を見つけようとしています。そして、コードは結果の辞書形式を出力します。そして私がこれまで行ってきたことは、プログラムに単語の周波数を数えさせるが、文字/文字の周波数を数えさせないことです。誰かがこのコードで私の間違いを指摘することができればすばらしいだろう。ありがとうございました。dictで手紙の頻度を数えて

{'a':2,'b':1,'c':1,'d':1,'z':1} 

**が、これは私が実際に取得していますものです:: は、それはこのように見えるようになって

{'abc':1,'az':1,'ed':1} 

**私のコードは、これが正しい

word_list=['abc','az','ed'] 
def count_letter_frequency(word_list): 
    letter_frequency={} 
    for word in word_list: 
    keys=letter_frequency.keys() 
    if word in keys: 
     letter_frequency[word]+=1 
    else: 
     letter_frequency[word]=1 
    return letter_frequency 
+1

あなたは* words *のリストを反復していますが、各アイテムは* letter *を呼び出しています。おそらく、あなたが 'word_list in word_list:'に名前を変更した場合、問題の内容と解決方法をより明白にするでしょう。命名は重要です! – jonrsharpe

答えて

0

を下回っていますコード:

word_list=['abc','az','ed'] 

def count_letter_frequency(word_list): 
    letter_frequency={} 
    for word in word_list: 
    for letter in word: 
     keys=letter_frequency.keys() 
     if letter in keys: 
      letter_frequency[letter]+=1 
     else: 
      letter_frequency[letter]=1 
    return letter_frequency 

あなたはリストを反復していて、リストには単語が含まれています。だから、あなたはあなたの辞書の中の単語として言葉を作っていました。したがって、各単語の文字を繰り返し処理するために、別のforループを追加する必要があります。

+0

私はループのための別のものを追加し、それは働いた!私が今までに必要だったのは、この余分なループです。これを手伝ってくれてありがとう。 –

+0

問題を解決した場合は、この回答を最良の回答として受け入れてください。 –

0

これは許容可能である:あなたがforループでこれを好む場合

flat = ''.join(word_list) 
{l: flat.count(l) for l in set(flat)} 
#{'a': 2, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'z': 1} 

、ここではそれが行く:

flat = ''.join(word_list) 
result = {} 
for l in flat: 
    if l in result: 
     result[l] += 1 
    else: 
     result[l] = 1 
1

使用collections.Counter

from collections import Counter 

print Counter(''.join(word_list)) 
# Counter({'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1, 'z': 1}) 

または要素を自分でカウントカウンターを使用したくない場合は、

from collections import defaultdict 

d = defaultdict(int) 
for c in ''.join(word_list): 
    d[c] += 1 
print d 
# defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1, 'z': 1}) 
+0

私はコレクションなしでこれをやろうとしていました。しかしこれはまだ役立つ。ありがとうございました –