Как найти несколько наиболее часто встречающихся элементов в списке - PullRequest
3 голосов
/ 01 декабря 2019

Моя программа ниже находит самый частый элемент в списке:

numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0]
counter = []

for num in range(10):
    n = numbers.count(num)
    counter.append(n)

largest = max(counter)
print(counter.index(largest))

Вывод равен 7, что правильно.

Однако, если я добавлю еще 9 в список:

numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]

, что означает, что в списке есть два наиболее часто встречающихся элемента (в этом случае и 7, и 9 находятся там три раза, как показано выше), он печатает только один из них - 7 в этом случае.

Есть ли способ изменить мой код, чтобы вывод был правильным?

Ответы [ 3 ]

4 голосов
/ 01 декабря 2019

Вот решение, которое работает для любого типа данных, а не только для положительных целых чисел в заранее известном диапазоне.

Мы считаем с помощью collections.Counter, извлекаем максимальное число, которое является счетчикомmost_common number, затем составьте список номеров с одинаковым количеством:

from collections import Counter

numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]
counts = Counter(numbers)
max_count = counts.most_common(1)[0][1]
out = [value for value, count in counts.most_common() if count == max_count]
print(out)
# [7, 9]
1 голос
/ 01 декабря 2019
for num in range(10):
    if counter[num] == largest:
        print(num)
0 голосов
/ 01 декабря 2019

Вот мой путь:

numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]
counter = set([x for x in numbers if numbers.count(x) > 1])
print(max(counter))
# 9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...