how can I avoid abusing lists?

Justin Azoff justin.azoff at gmail.com
Fri Jul 7 13:15:55 EDT 2006


Thomas Nelson wrote:
> This is exactly what I want to do: every time I encounter this kind of
> value in my code, increment the appropriate type by one.  Then I'd like
> to go back and find out how many of each type there were.  This way
> I've written seems simple enough and effective, but it's very ugly and
> I don't think it's the intended use of lists.  Does anyone know a
> cleaner way to have the same funtionality?
>
> Thanks,
> THN

Just assign each type a number (type1 -> 1, type2 -> 2) and then count
the values as usual

def count(map, it):
    d={}
    for x in it:
        x = map[x] #only difference from normal count function
        #d[x]=d.get(x,0)+1
        if x in d:
            d[x] +=1
        else:
            d[x] = 1
    return d

>>> map = {0:1, 1:1, 2:3, 3:1, 4:2}
>>> count(map, [1,1,0,4])
{1: 3, 2: 1}
>>> for x in count(map, [1,1,0,4]).items():
...  print 'type%d: %d' %x
... 
type1: 3
type2: 1




More information about the Python-list mailing list