Python:列表中出现次数最多的值

Kee*_*nan 12 python list

我有两个列表如下

x = ['a','a','b','c','b','a']
Run Code Online (Sandbox Code Playgroud)

x = ['a','a','b','c','c','d']
Run Code Online (Sandbox Code Playgroud)

我试图找出每个列表中出现最多的值.这就是我尝试过的.

def unique_values(output,input):
    for i in input:
        if i not in output:
            output.append(i)
k = []
for i in k:
    unique_values(k,x)
    y.remove(i)
Run Code Online (Sandbox Code Playgroud)

我已经做到这一点,但我无法弄清楚如何for i in k:在它删除列表中的所有值之前停止.

Roh*_*ain 34

如果要查找列表中每个元素的出现位置,可以使用Countermodule from 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)]
Run Code Online (Sandbox Code Playgroud)

因此,前两个元素在您的列表中最常见.

>>> count.most_common()[0]
('a', 2)
>>> count.most_common()[1]
('c', 2)
Run Code Online (Sandbox Code Playgroud)

或者,您还传递参数以most_common()指定most-common您想要的元素数量: -

>>> count.most_common(2)
[('a', 2), ('c', 2)]
Run Code Online (Sandbox Code Playgroud)

更新: -

您还可以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']
Run Code Online (Sandbox Code Playgroud)