2012-05-29 3 views
3

다른 값이 내 사전에 나열된 횟수를 계산해야합니다. 문제는 값을 계산하는 방법을 파악할 수 없다는 것입니다.파이썬 사전 수

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) 

내가 할 노력하고있어 모든 수의사, AgHort 및 탁아소 공원의 수를 계산합니다. 나는 나머지 스크립트가 작동하면서 키를 바꿀 수 없다.

도움 주셔서 감사합니다.

간단해야하지만, 나는 그것을 크랙하지 않는다.

답변

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

카운터 파이썬 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'를 사용하는 것도 좋습니다. –