2016-10-27 3 views
1

私のプログラムは、テキストファイルの最初の文字に対してのみ機能し、無限に繰り返されます。たとえば、テキストファイルの最初の文字がdの場合、プログラムは{'d':1}を繰り返し返します。ファイルを関数の引数として使用すると、テキストファイル内の各文字のカウントが作成されます。

私はそれをテキストファイルで処理し、各文字を数え、最終的に文字数を降順に並べる必要があります。

def add_or_init(dictionary, c): 
    if(c in dictionary): 
      dictionary[c]+=1 
    else: 
      dictionary[c]=1 
def count_one_letter(dictionary, c, is_letter): 
    if is_letter(c): 
      add_or_init(dictionary, c) 
def count_letters(dictionary, word, is_letter): 
    f = open('suffix.txt') 
    for word in f.read().split(): 
     for c in word: 
      count_one_letter(dictionary, c, is_letter) 
      return dictionary 
f = open('suffix.txt') 
for word in f.read().split(): 
t=len(word) 
while True: 
    print(count_letters(dict(),word,lambda x: True)) 

答えて

1

あなたは、大きい順に印刷するには次にcollections

from collections import defaultdict, Counter 
with open('filename.txt') as f: 
    text = f.read() 
    letter_count = Counter(c for c in text if c.isalpha()) 

からCounterを使用することができた場合:

print(letter_count.most_common()) 
+0

私はCがプリント(Cを交換@msprague – msprague

+1

が定義されていません取得します。 most_common())とprint(letter_count.most_common())が動作します – KingMak

+0

助けてくれてありがとう! – msprague

関連する問題