Counting number of each item in a list.

Kent Johnson kent at
Sun Mar 19 15:18:45 CET 2006

sophie_newbie wrote:
> Hey Bruno,
> I got an invalid syntax error when i tried using your "str_counts =
> dict((s, str_list.count(s) for s in set(str_list))" bit of code? Maybe
> there is a missing bracket or comma? Or maybe I need to import
> something.

It should be
str_counts = dict((s, str_list.count(s)) for s in set(str_list))

or for Python < 2.4
str_counts = dict([(s, str_list.count(s)) for s in set(str_list)])

Note that this solution iterates str_list once for each element of 
str_list - the call to count traverses the entire list to create the 
count. I expect Paul Rubin's solution will be dramatically faster for 
large lists as it only iterates str_list once.


More information about the Python-list mailing list