2017-11-03 1 views
-1

forループで最も使用されている文字を返すにはどうすればよいですか?ルーピング中に最も多く使われている文字を返す - Python

マイコード:

import string 

def intefer_shift(encrypted_textfile, language): 

index = 0 
file_connector = open(encrypted_textfile,'r') 
data = file_connector.read() 
box =[] 
data = data.lower() 

file_connector.close() 
times = 0 

#this for loop is designed to count the number of times items appear in file 

# this for loop is designed print each letter in the alphabet and tells how many times they appear 
for letter in string.ascii_lowercase: 
    num = data.count(letter) 
    print(letter, ':', num) 

intefer_shift('homework1.txt','English') 
+0

あなたの質問は完全にコードです。あなたの**質問**に実際に*質問*をお願いします。 –

+0

辞書がどのように機能するか知っていますか?はいの場合は、1つを使用して文字を数えます。現代的な方法としては、[collections.Counter'](https://docs.python.org/3/library/collections.html#collections.Counter)があります。 – skrx

答えて

0

は、単にループの各反復で(必要な場合)、更新、MAX_VALUE格納するカウンタのいくつかの種類を追加します。

top_letter = None 
max_count = 0 
for letter in string.ascii_lowercase: 
    num = data.count(letter) 
    print(letter, ':', num) 
    if num > max_count: 
     max_count = num 
     top_letter = letter 
return top_letter 

マインドおそらくビッグデータ列で数える文字が次々は効率的ではないかもしれないが、おそらくより良いオプションは、一度データの文字とインクリメントカウンタのすべてのそれらのそれぞれのループになるという事実は、 (この解決法は、空間の複雑さはより悪化するが、時間の複雑さは改善される)。

関連する問題