2012-05-29 3 views
3

Мне нужно подсчитать количество раз, когда в моем словаре указаны разные значения. Проблема в том, что я не могу понять, как подсчитать значения.python dictionary count

print dic 
{'KLOI98': ['Martha Miller', '4563', 'Vet_Parking'], 'TY5678': ['Jane Miller', '8987', 'AgHort_Parking'], 'WER546': ['Olga Grey', '9898', 'Creche_Parking'], 'HUY768': ['Wilbur Matty', '8912', 'Creche_Parking'], 'EDF768': ['Bill Meyer', '2456', 'Vet_Parking'], 'DF7800': ['Jacko Frizzle', '4532', 'Creche_Parking'], 'JU9807': ['Jacky Blair', '7867', 'Vet_Parking'], 'GEF123': ['Jill Black', '3456', 'Creche_Parking'], 'ADF645': ['Cloe Freckle', '6789', 'Vet_Parking'], 'GH7682': ['Clara Hill', '7689', 'AgHort_Parking'], 'ABC234': ['Fred Greenside', '2345', 'AgHort_Parking']} 

и мой код:

for k, v in dic.items(): 
    print "%s: %s" % (k, v) 

Все, что я пытаюсь сделать, это подсчитать количество Vet, AgHort и Creche парков. Я не могу изменить ключ, так как остальная часть моего скрипта работает с ним.

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

Должно быть простым, но я просто не могу его разорвать.

ответ

12
from collections import Counter 
items = Counter(val[2] for val in dic.values()) 
+0

работал с удовольствием. – Dustin

+0

Я даже понимаю, как я ошибся. – Dustin

+0

Спасибо за помощь – Dustin

0

Вы просто должны сократить свои данные необходимые данные, а затем использовать Counter:

from collections import Counter 
print Counter([x[2] for x in data.values()]) 

Он показывает:

Counter({'Creche_Parking': 4, 'Vet_Parking': 4, 'AgHort_Parking': 3}) 
2

Счетчик требует, чтобы вы с помощью Python 2.7 или больше. Для тех из нас, кто должен использовать 2,6 или до (не смейтесь - есть несколько основных аналитических библиотек они не обновили еще ...) ....

result = {} 
for item in [value[2] for value in test.values()]: 
    result[item]=result.get(item,0)+1 
print result 

Я использую понимание списка для распаковки данных - обоснование заключалось в том, что это можно было протестировать как отдельный элемент, прежде чем добавить сложность свертывания данных. На самом деле есть более чем один способ справиться с этой частью :)

+1

Здесь вы также можете использовать 'defaultdict'. –