Find duplicates in a list and count them ...

MRAB google at mrabarnett.plus.com
Thu Mar 26 18:54:55 EDT 2009


Benjamin Kaplan wrote:
> 
> 
> On Thu, Mar 26, 2009 at 5:14 PM, <Paul.Scipione at aps.com 
> <mailto:Paul.Scipione at aps.com>> wrote:
> 
>     Hi D'Arcy J.M. Cain,
> 
>     Thank you.  I tried this and my list of 76,979 integers got reduced
>     to a dictionary of 76,963 items, each item listing the integer value
>     from the list, a comma, and a 1.  I think what this is doing is
>     finding all integers from my list that are unique (only one instance
>     of it in the list), instead of creating a dictionary with integers
>     that are not unique, with a count of how many times they occur.  My
>     dictionary should contain only 11 items listing 11 integer values
>     and the number of times they appear in my original list.
> 
> 
> 
> Not all of the values are 1. The 11 duplicates will be higher. Just 
> iterate through the dict to find all keys with values > 1.
> 
>  >>> icounts
> {1: 2, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 5, 8: 3, 9: 1, 10: 1, 11: 1}
> 
> Python 2.x :
>  >>> dups = {}
>  >>> for key, value in icounts.iteritems() :
> ...    if value > 1 :
> ...       dups[key] = value
> ...
>  >>> dups
> {8: 3, 1: 2, 7: 5}
> 
> 
> Python 3.0 :
>  >>> dups = {key:value for key, value in icounts.items() if value > 1}
>  >>> dups
> {8: 3, 1: 2, 7: 5}
> 
The equivalent in Python 2.x would be:

 >>> dups = dict((key, value) for key, value in icounts.iteritems() if 
value > 1)
 >>> dups
{8: 3, 1: 2, 7: 5}



More information about the Python-list mailing list