Python: значение, которое больше всего встречается в списке

У меня есть два списка:

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

а также

 x = ['a','a','b','c','c','d'] 

Благодаря Rohit я обнаружил, что это работает для второго значения x.

 from collections import Counter count = counter(x) count.most_common() 

я добавил

 mc = [i for i,z in count.most_common() if z == 3] 

но мне все еще нужно вводить z == 3 чтобы получить наиболее распространенный. Нужно ли вообще сделать z == 3 чем-то вроде max(z)

  • Доступ к элементам словаря python
  • python / matplotlib - многоцветная линия
  • django: Жирные модели и тощие контроллеры?
  • Как подойти к связанному списку, используя понимание списка?
  • Как установить PyGreSQL с помощью Virtualenv на Mac OS Sierra
  • Передача списка в Python из командной строки
  • Разница между BeautifulSoup и искателем Scrapy?
  • Как настроить Eclipse для запуска браузера при выборе Run или Debug с помощью плагина Pydev
  • 2 Solutions collect form web for “Python: значение, которое больше всего встречается в списке”

    Вы можете использовать Counter модуль из collections , если вы хотите найти вхождения каждого элемента в списке:

     >>> x = ['a','a','b','c','c','d'] >>> from collections import Counter >>> count = Counter(x) >>> count Counter({'a': 2, 'c': 2, 'b': 1, 'd': 1}) >>> count.most_common() [('a', 2), ('c', 2), ('b', 1), ('d', 1)] 

    Итак, первые два элемента наиболее распространены в вашем списке.

     >>> count.most_common()[0] ('a', 2) >>> count.most_common()[1] ('c', 2) 

    или вы также передаете параметр most_common() чтобы указать, сколько most-common элементов вы хотите:

     >>> count.most_common(2) [('a', 2), ('c', 2)] 

    Обновить : –

    Вы также можете сначала узнать max кол-во, а затем найти общее количество элементов с этим значением, а затем вы можете использовать его как параметр в most_common() : –

     >>> freq_list = count.values() >>> freq_list [2, 2, 1, 1] >>> max_cnt = max(freq_list) >>> total = freq_list.count(max_cnt) >>> most_common = count.most_common(total) [('a', 2), ('c', 2)] >>> [elem[0] for elem in most_common] ['a', 'c'] 

    Вот еще одно решение:

     max(zip((x.count(item) for item in set(x)), set(x))) 

    Во-первых, мы получаем коллекцию, не содержащую повторяющихся элементов с использованием set.

     >>> set(x) {'a', 'c', 'b'} 

    Затем мы подсчитываем, сколько раз каждый элемент находится в x. Это вернет объект-генератор, вы можете сделать его списком, чтобы увидеть его значения (используя «[…]» вместо «(…)»), он вернет [3, 1, 2].

     >>> (x.count(item) for item in set(x)) 

    Затем мы берем счетчики и соединяем их с элементами, используя zip. Количество вхождений сначала, для следующего шага. Вы можете увидеть его значение, используя список (…) на нем, он вернет [(3, 'a'), (1, 'c'), (2, 'b')].

     >>> zip((x.count(item) for item in set(x)), set(x)) 

    Наконец, мы найдем, какая из пар встречается чаще всего с использованием max.

     >>> max(zip((x.count(item) for item in set(x)), set(x))) (3, 'a') 

    Что касается второго значения, решение немного длиннее. Вышеупомянутое используется в понимании списка:

     >>> [mitem for mitem in zip((x.count(item) for item in set(x)),set(x)) if mitem[0] == max((x.count(item) for item in set(x)))] [(2, 'a'), (2, 'c')] 
    Python - лучший язык программирования в мире.