宿題のように聞こえますが、その場合collections.Counter
は利用できない可能性があり、回答の代わりにガイダンスを提供する価値がある理由もあります。
まず、一意の値をカウントする必要があります。いくつかの入力がある場合、どうすれば一意の値を取得できますか?
答え: セットを使用します。
>>> sample = [1, 3, 6, 7, 7, 7, 7, 8]
>>> set(sample)
{8, 1, 3, 6, 7}
# Notice: the order has been thrown away
>>> newsample = 'LollaPAloOza'
>>> set(newsample)
{'a', 'A', 'L', 'l', 'o', 'O', 'z', 'P'}
# Notice: lowercase and uppercase are treated as different characters.
新しい質問: 小文字と大文字を同じように扱うにはどうすればよいですか?
回答: 入力全体を変更して、小文字または大文字にします。
>>> set(newsample.lower())
{'a', 'p', 'z', 'l', 'o'}
これで、カウントする一意の値のセットができました。次の問題: これらをどのように数えますか?
答え: セットを (for ループを使用して) 反復処理してから、セット内の各アイテムを数えることができます。
my_input = newsample.lower()
for item in set(my_input):
print(my_input.count(item))
# the trick here is to iterate through the unique values and for each element,
# to count the item that appears in the _whole_ (now lowercase) input.
最後に、アイテムをカウントとともに保存するためのデータ構造を作成する必要があります。辞書はこれを行うのに適した方法です。または、表示された順序で回答が必要なため、リストを作成し、各カウントをリスト内の各項目に何らかの方法で関連付けることをお勧めします。
ただし、使用できる場合、この作業はすべて によって実行されcollections.Counter
ます。