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 に答える