["python","list","frequency"]
How to count the frequency of the elements in an unordered list?

Given an unordered list of values like a = [5, 1, 2, 2, 4, 3, 1, 2, 3, 1, 1, 5, 2] How can I get the frequency of each value that appears in the list, like so? # `a` has 4 instances of `1`, 4 of `2`, 2 of `3`, 1 of `4,` 2 of `5` b = [4, 4, 2, 1, 2] # expected output
In Python 2.7 (or newer), you can use collections.Counter: >>> import collections >>> a = [5, 1, 2, 2, 4, 3, 1, 2, 3, 1, 1, 5, 2] >>> counter = collections.Counter(a) >>> counter Counter({1: 4, 2: 4, 5: 2, 3: 2, 4: 1}) >>> counter.values() dict_values([2, 4, 4, 1, 2]) >>> counter.keys() dict_keys([5, 1, 2, 4, 3]) >>> counter.most_common(3) [(1, 4), (2, 4), (5, 2)] >>> dict(counter) {5: 2, 1: 4, 2: 4, 4: 1, 3: 2} >>> # Get the counts in order matching the original specification, >>> # by iterating over keys in sorted order >>> [counter[x] for x in sorted(counter.keys())] [4, 4, 2, 1, 2] If you are using Python 2.6 or older, you can download an implementation here.