Python, как распечатать отдельные счетчики из цикла/сложить их вместе?

Итак, у меня есть словарь

d = {'a': [4,'Adam', 2, ‘Bob’, 3], 'b': [3,'John', 4, ‘Bill’], 'c': [4,'Adam', 3, 4, ‘John’], 'd': [4,'Bill', ‘Joe’, 3], 'e': [4,'Bob', ‘Bob’, 5, 8, 10], 'f': [4, 'Joe'], 'g': [4, 'Bill', 4, ‘Joe’, 1]}

Из которого я хочу вернуть количество имен, таких как

Adam: 2
Bill: 3
John: 2
Bob: 3
Joe: 3

Я пробовал использовать счетчик коллекций через эту функцию:

x = 0
for vals in d.itervalues(): 
    while x<len(vals):           
        if type(vals[x]) == str:
            print Counter([vals[x]])
        x = x+1 

Что возвращает

Counter({'Adam': 1})
Counter({'Bob': 1})
Counter({'Adam': 1})
Counter({'John': 1})
Counter({'John': 1})
Counter({'Bill': 1})
Counter({'Bob': 1})
Counter({'Bob': 1})
Counter({'Bill': 1})
Counter({'Joe': 1})
Counter({'Bill': 1})
Counter({'Joe': 1})
Counter({'Joe': 1})

Но это не тот результат, которого я хочу. Мне просто нужно добавить счетчики? Как бы я это сделал? Я знаю, что в классе счетчика есть функция сложения/вычитания, но методы, которые я пытаюсь использовать, не работают.

Я также пробовал что-то подобное, чтобы распечатать разные счетчики для каждого варианта.

'c%s'%(x)

Что бы установить c1, c2, c3 для каждого счетчика, а затем я мог бы просто добавить их с c1 + c2 + c3, чтобы получить желаемый результат. Однако я не могу распечатать эти разные списки счетчиков.

Наряду с этим, когда он возвращает результат, он всегда возвращает «Счетчик ({__} )". Как мне удалить эту часть или просто распечатать имена и только считать?

Спасибо за помощь!

0
задан user1530318 2 August 2012 в 15:48
поделиться