简体   繁体   中英

How to get the most common element from a list in python

I'm having a list as shown here. a=[1936,2401,2916,4761,9216,9216,9604,9801] I want to get the value which have more duplicates. In here it is '9216' how can i get this value? Thanks

You can use collections.Counter for this:

from collections import Counter

a = [1936, 2401, 2916, 4761, 9216, 9216, 9604, 9801] 

c = Counter(a)

print(c.most_common(1)) # the one most common element... 2 would mean the 2 most common
[(9216, 2)] # a set containing the element, and it's count in 'a'

From the docs:

在此输入图像描述 在此输入图像描述

https://docs.python.org/2.7/library/collections.html#counter

from collections import Counter Counter(a).most_common(1)

Here is another one not using counter

a=[1936,2401,2916,4761,9216,9216,9604,9801]
frequency = {}
for element in a:
    frequency[element] = frequency.get(element, 0) + 1
# create a list of keys and sort the list
# all words are lower case already
keyList = frequency.keys()
keyList.sort()
print "Frequency of each word in the word list (sorted):"
for keyElement in keyList:
    print "%-10s %d" % (keyElement, frequency[keyElement])

There's two standard library ways to do this:

statistics.mode :

from statistics import mode
most_common = mode([3, 2, 2, 2, 1])  # 2
most_common = mode([3, 2])  # StatisticsError: no unique mode

collections.Counter.most_common :

from collections import Counter
most_common, count = Counter([3, 2, 2, 2, 1]).most_common(1)[0]  # 2, 3
most_common, count = Counter([3, 2]).most_common(1)[0]  # 3, 1

Both are identical in terms of performance, but the first raises an exception when there is no unique most common element and the second returns the frequency as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM