0

a list of ["A","A","A","B","B","B"]

to dictionary of {'A': 3, 'B': 3}

I've done something like below but i feel like there is a faster/shorter way of doing it?

frequencyMap = dict()
letters = ["A","A","A","B","B","B"]

for letter in letters:
    if letter not in frequencyMap:
        frequencyMap[letter] = 0
    frequencyMap[letter] += 1
ealeon
  • 12,074
  • 24
  • 92
  • 173

2 Answers2

1

In Python 2.7 (or newer), you can use collections.Counter

collections.Counter()

A counter is a container that stores elements as dictionary keys, and their counts are stored as dictionary values.

import collections
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
counter=collections.Counter(a)
print(counter)
# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})
ncica
  • 7,015
  • 1
  • 15
  • 37
1
from collections import Counter

print(Counter(["A","A","A","B","B","B"]))
dmmfll
  • 2,666
  • 2
  • 35
  • 41