Sortowanie po liczbach całkowitych

0

Męczę się z pewnym prostym problemem. Chcę wypisać ilość wystąpień poszczególnych liter w zdaniu (ale tylko liter, które się powtarzają). To działa, mój output:

a   4
l    2
i    2
e   6
k   2
o   2

Ale ja chcę by wyświetlało mi od tych najczęściej występujących, a nie tak losowo tzn:

e   6
a   4
l    2
i    2
k   2
o   2

Mój kod:

def count_letter(string1):
    list1=[]

    for letter in string1:
        if string1.count(letter)>=2:
            if letter not in list1:
                list1.append(letter)


    for item in list1:
        if item!= " ":
            print(item,string1.count(item))


count_letter('ala ma wieeeeelkiego kota')
2

Ogólnie to dziwne podejście. Zamiast zapisywać do listy literki, które wystąpują częściej niż dwa razy lepiej zapisać do listy liczbę wystąpień danej literki. Wtedy możesz ją posortować i wyświetlić. Jeszcze lepiej w tym przypadku skorzystać z https://docs.python.org/3/library/collections.html#collections.Counter

from collections import Counter

string = 'aa bb bcdd'

x = Counter(string)

for character, occurences_number in x.most_common():
    if occurences_number > 1 and character != ' ':
        print(character, occurences_number)

0

Dziękuję bardzo. Na tym bym nie wpadł. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1