2016-08-26 7 views
0

私はリスト内で各文字列をカウントするためにコレクションカウンタを使用しています(それらは一意ではないかもしれません)。問題は今、私は辞書にアクセスすることができない、なぜ私は確信していないということです。collections counter pythonがキーにアクセスできない

私のコードは次のとおりです。私は結果1を印刷する場合、出力は、例えばある

from collections import Counter 
result1 = Counter(list_final1) #to count strings inside list 

Counter({'BAM': 44, 'CCC': 20, 'APG': 14, 'MBI': 11, 'BAV': 10}) 

私はカウンターを使用することを期待するexampkeの番号44にアクセスするには[ 'BAM']

しかし、これ以上のdoesntの仕事と私はエラーを取得する:

print (Counter['BAM']) 
TypeError: 'type' object is not subscriptable 

私は間違って何をしていますか?どうもありがとう。

+0

試してみてください 'result1 [' BAM '] ' – muddyfish

答えて

2

keyに、Counterという値を格納した変数をケースresult1に使用してください。サンプル:

>>> from collections import Counter 
>>> my_dict = {'BAM': 44, 'CCC': 20, 'APG': 14, 'MBI': 11, 'BAV': 10} 
>>> result = Counter(my_dict) 
>>> result['BAM'] 
44 

、について説明

あなたは無効であるPARAMとして'BAM'で新しいCounterオブジェクトを作るすなわち、Counter['BAM']を行っています。代わりにCounter(my_dict)['BAM']を実行すると、それはあなたのdictが渡された同じオブジェクトであり、その中で'BAM'キーにアクセスしているので動作します

+0

humm ,,それが動作します!しかし、私は理解しませんでした。つまり、コレクションカウンターで作成されたこの辞書は他の辞書と同じではありません。どうぞよろしくお願いします。 – Gonzalo

+0

同じです。しかし、あなたは 'Counter ['BAM']'を実行しています。つまり、無効なparamとして 'BAM 'を持つ新しい' Counter'オブジェクトを作っています。代わりに 'Counter(my_dict)['BAM']'を実行すると、あなたの辞書が渡されたのと同じオブジェクトであり、その中の '' BAM ''キーにアクセスしているので動作します。 –

+0

ありがとうございました。 – Gonzalo

関連する問題