I have a dictionary of lists for which I want to add a value to a particular list... I have the following dictionary of lists.
d = {'a': [4,'Adam', 2], 'b': [3,'John', 4], 'c': [4,'Adam', 3], 'd': [4,'Bill' 3], 'e': [4,'Bob'], 'f': [4, 'Joe'], 'g': [4, 'Bill']}
I want to essentially count out the number of names and return in. So in this case it would be something like
Adam: 2
Bill: 2
John: 1
Bob: 1
Joe: 1
To make things easier, all names are the second element in the list or
for i in d:
d[i][1]
Any idea how I can do this efficiently? I'm currently just manually checking for each name and counting and returning that =/
Thanks in advance!
collections.Counter
is always good for counting things.
>>> from collections import Counter
>>> d = {'a': [4,'Adam', 2], 'b': [3,'John', 4], 'c': [4,'Adam', 3], 'd': [4,'Bill', 3], 'e': [4,'Bob'], 'f': [4, 'Joe'], 'g': [4, 'Bill']}
>>> # create a list of only the values you want to count,
>>> # and pass to Counter()
>>> c = Counter([values[1] for values in d.itervalues()])
>>> c
Counter({'Adam': 2, 'Bill': 2, 'Bob': 1, 'John': 1, 'Joe': 1})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With