1

このコードを書くより良い方法はありますか?エラーはありませんが、入力したすべての文字がリストに並べ替えられて印刷されているようです。

複数ある場合でも、一般的な文字を文字列で印刷したい。

これが私が持っているものです

mystr = input("Enter a string:")
s = list(mystr) 
letter_counter = {}
for word in mystr:
    if word in letter_counter:
         letter_counter[word] += 1
    else:
         letter_counter[word] = 1

 user_letter = sorted(letter_counter, key = letter_counter.get, reverse = True)

 number_1 = user_letter[:2]
 print(number_1)  

正しい文字を印刷できる唯一の方法は、制限を設定することです。

number_1 = user_letter[:2]

たとえば、次のように入力した場合:

mystr = input("Thomas Jones")

コードでは、印刷出力は次のようになります

print(number_1)       
[o], [s]

どちらが正しいですが、制限がからに設定されている2場合3

number_1 = user_letter[:3]

あるべきではないものが[o] [s] [a]1つだけあると印刷されます。aユーザーが入力した単語の数に関係なく、リミッターなしで正しい繰り返し文字が表示されるようにしたいと思います。

私は自由が行き詰まっていますこれを修正する方法がわかりません

4

2 に答える 2

8
from collections import Counter
[letter for letter,count in Counter("Thomas Jones").items() if count > 1]
于 2013-03-24T09:23:47.787 に答える
2

あなたのコードは

letter_counter = {'a': 1, ' ': 1, 'e': 1, 'h': 1, 'J': 1, 'm': 1, 'o': 2, 'n': 1, 's': 2, 'T': 1}
user_letter = ['o', 's', 'a', ' ', 'e', 'h', 'J', 'm', 'n', 'T']

これはすべて正しいです。

繰り返し文字だけが必要な場合は、

user_letter = [letter for letter in letter_counter if letter_counter[letter] > 1]

または同様のもの。

于 2013-03-24T09:25:36.207 に答える