列表中最常出现的元素

时间:2019-09-25 20:09:55

标签: python list

是否有一种方法可以将出现次数最多的元素列表从列表输出到列表中,或者将所有出现次数最多的元素(如果有关系)输出到列表中?

我想解决这个问题而不导入任何类!

例如,[5,4,3]将输出[5,4,3]。

[5,4,4,5]将输出[5,4]

我尝试过max(set(list),key = list.count),但对于领带并没有真正的作用。

到目前为止我的工作:

test = ['test1', 'test2', 'test3']
dict = {}

for elements in test:
    if elements in dict:
        dict[elements] += 1
    else:
        dict[elements] = 0
        dict[elements] += 1

print (dict)

1 个答案:

答案 0 :(得分:1)

您可以使用collections.Counter,找到最大数量,然后保留最大数量:

       SELECT
            CASE WHEN p.ProjNo = '12345' and LEFT(d.DocumentNo,8) IN(12345678,23456789, 34567890) THEN LEFT(d.DocumentNo,8) ELSE p.ProjNo END AS ProjNo ,
           CASE WHEN p.ProjNo = '12345' and LEFT(d.DocumentNo,8) IN(12345678,23456789, 34567890) THEN N'' ELSE p.projTitile END AS projTitile
    FROM yourtable p
INNER JOIN document d
ON ...

输出

from collections import Counter

counts = Counter([5, 4, 4, 5, 3])

max_count = max(counts.values())
result = [k for k, count in counts.items() if count == max_count]

print(result)

您可以用一个简单的字典代替Counter:

[5, 4]