Как отобразить все уникальные элементы списка и их количество по убыванию?

Дан список: data=[пр1, пр1, пр1, пр1, пр2, пр2, пр3]. Требуется получить на выходе отсортированные по убыванию данные в виде:

4 пр1 
2 пр2
1 пр3

Сначала пыталась использовать Counter. Вывелось так же, как требуется, но не было сортировки, поэтому решение не подошло. Может есть способ отсортировать элементы в этом случае?

from collections import Counter
c=Counter(data)
for i in c:
    print(c[i],i)

Следующей попыткой пробовала так:

data1=set(data)
data2=list(data1)
c1=data.count('пр1')
c2=data.count('пр2')
c3=data.count('пр3')
f=[c1,c2,c3]

Так в data2 остались только уникальные элементы. В f хранятся значения количества повторяющихся элементов в исходном списке. Надо как-то соединить их правильно. Пыталась с помощью zip, но видимо плохо пыталась. А ещё отсортировать и вывести в столбик. То есть мне бы получить вот такой список: [(4, 'пр1'), (2, 'пр2'), (1, 'пр3')]. И при выводе с помощью print(*d, sep = "\n") избавиться от скобок.


Ответы (2 шт):

Автор решения: Dmitry

Возможно, вы что-то не так пробовали.

from collections import Counter

data = ['a', 'b', 'a', 'c', 'b', 'b']

data = Counter(data)
data = [(value, key,) for key, value in data.items()]
data.sort(reverse=True)

print(data)

>> [(3, 'b'), (2, 'a'), (1, 'c')]

Ну а дальше можете делать с этим списком что угодно.

→ Ссылка
Автор решения: insolor

Метод .most_common() (примерно переводится как "самые частые") объекта Counter возвращает ключи-значения в порядке убывания значения (т.е. количества), так что тут можно обойтись без явной сортировки:

from collections import Counter

data = ["пр1", "пр1", "пр1", "пр1", "пр2", "пр2", "пр3"]

counter = Counter(data)
print(counter.most_common())

Вывод: [('пр1', 4), ('пр2', 2), ('пр3', 1)]

Если нужно в каждой паре выводить сначала количество, потом сам элемент, то через list comprehension можно поменять их местами:

inverted = [(value, key) for key, value in counter.most_common()]
print(inverted)

Вывод: [(4, 'пр1'), (2, 'пр2'), (1, 'пр3')]

→ Ссылка