GTXY20 wrote: > Hello, > > Any way to display the count of the values in a dictionary where the > values are stored as a list? here is my dictionary: > > {'1': ['a', 'b', 'c'], '3': ['a', 'b', 'c'], '2': ['a', 'b', 'c'], '4': > ['a', 'c']} > > I would like to display count as follows and I would not know all the > value types in the values list: > > Value QTY > a 4 > b 3 > c 4
You need two nested loops - one to loop over the dictionary values and one to loop over the individual lists. collections.defaultdict is handy for accumulating the counts but you could use a regular dict also: In [4]: d={'1': ['a', 'b', 'c'], '3': ['a', 'b', 'c'], '2': ['a', 'b', 'c'], '4': ['a', 'c']} In [5]: from collections import defaultdict In [6]: counts=defaultdict(int) In [7]: for lst in d.values(): ...: for item in lst: ...: counts[item] += 1 ...: In [8]: counts Out[8]: defaultdict(<type 'int'>, {'a': 4, 'c': 4, 'b': 3}) In [10]: for k, v in sorted(counts.items()): ....: print k,v ....: ....: a 4 b 3 c 4 > Also is there anyway to display the count of the values list > combinations so here again is my dictionary: > > {'1': ['a', 'b', 'c'], '3': ['a', 'b', 'c'], '2': ['a', 'b', 'c'], '4': > ['a', 'c']} > > > And I would like to display as follows > > QTY Value List Combination > 3 a,b,c > 1 a,c Again you can use a defaultdict to accumulate counts. You can't use a mutable object (such as a list) as a dict key so you have to convert it to a tuple: In [11]: c2=defaultdict(int) In [13]: for v in d.values(): ....: c2[tuple(v)] += 1 ....: In [14]: c2 Out[14]: defaultdict(<type 'int'>, {('a', 'b', 'c'): 3, ('a', 'c'): 1}) Printing in order of count requires switching the order of the (key, value) pairs: In [15]: for count, items in sorted( ((v, k) for k, v in c2.items()), reverse=True): ....: print count, ', '.join(items) ....: 3 a, b, c 1 a, c or using a sort key: In [16]: from operator import itemgetter In [17]: for items, count in sorted(c2.items(), key=itemgetter(1), reverse=True): ....: print count, ', '.join(items) ....: 3 a, b, c 1 a, c Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor