Итак, у меня есть словарь
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, чтобы получить желаемый результат. Однако я не могу распечатать эти разные списки счетчиков.
Наряду с этим, когда он возвращает результат, он всегда возвращает «Счетчик ({__} )". Как мне удалить эту часть или просто распечатать имена и только считать?
Спасибо за помощь!