I know about list comprehensions, what about dictionary comprehensions?
Expected Output:
>>> countChar(\'google\')
{\'e\': 1, \'g\': 2,
If you're on Python 2.7 or newer:
{item: word.count(item) for item in set(word)}
works fine. You don't need to sort the list before you set it. You also don't need to turn the word into a list. Also, you're on a new enough Python to use collections.Counter(word)
instead.
If you're on an older version of Python, you can't use dict
comprehensions, you need to use a generator expression with the dict
constructor:
dict((item, word.count(item)) for item in set(word))
This still requires you to iterate over word
len(set(word))
times, so try something like:
from collections import defaultdict
def Counter(iterable):
frequencies = defaultdict(int)
for item in iterable:
frequencies[item] += 1
return frequencies