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)

我要做的就是数一数 Vet、AgHort 和 Creche 公园的数量。我无法更改密钥,因为我的脚本的其余部分都可以使用它。

谢谢您的帮助。

应该很简单,但我就是无法破解。

4

3 回答 3

12
from collections import Counter
items = Counter(val[2] for val in dic.values())
于 2012-05-29T18:32:57.177 回答
2

Counter 要求您使用 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

我正在使用列表推导来解包数据 - 理由是这可以作为一个独立的元素进行测试,然后再增加汇总数据的复杂性。实际上有不止一种方法可以处理这部分:)

于 2012-05-29T19:38:31.370 回答
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})
于 2012-05-29T18:39:06.173 回答