I have the following dictionary and i want to count how many times keys appear, dictionary is very big.
a = { (1,2):3, (1,3):5, (2,1):6 }
and I want this result
1: 3 times
2: 2 times
3: 1 time
I have the following dictionary and i want to count how many times keys appear, dictionary is very big.
a = { (1,2):3, (1,3):5, (2,1):6 }
and I want this result
1: 3 times
2: 2 times
3: 1 time
Use itertools.chain and a collections.Counter:
collections.Counter(itertools.chain(*a.keys()))
Alternatively:
collections.Counter(itertools.chain.from_iterable(a.keys()))
 
    
    >>> from collections import Counter
>>> a = { (1,2):3, (1,3):5, (2,1):6 }
>>> 
>>> Counter(j for k in a for j in k)
Counter({1: 3, 2: 2, 3: 1})
 
    
    Use itertools and collections.defaultdict
In [43]: a={(1,2):3,(1,3):5,(2,1):6}
In [44]: counts = collections.defaultdict(int)
In [45]: for k in itertools.chain.from_iterable(a.keys()):
   ....:     counts[k] += 1
   ....:     
In [46]: for k in counts:
    print k, ": %d times" %counts[k]
   ....:     
1 : 3 times
2 : 2 times
3 : 1 times
 
    
    from collections import Counter
items = Counter(val[2] for val in dic.values())
Hope that sorts it.
 
    
    Using python 3.2
from collections import Counter
from itertools import chain  
res = Counter(list(chain(*a)))
 
    
    