以下のコードを使用してリスト内の要素の出現回数を数えようとした後
from collections import Counter
A = ['a','a','a','b','c','b','c','b','a']
A = Counter(A)
min_threshold = 3
上記のA
でCounterを呼び出した後、次のようなカウンターオブジェクトが形成されます。
>>> A
Counter({'a': 4, 'b': 3, 'c': 2})
ここから、'a'
の最小しきい値を使用して'b'
と3
のみをどのようにフィルタリングしますか?
カウンターを作成し、次に、辞書の理解度を2番目のフィルタリング手順として使用します。
{x : A[x] for x in A if A[x] >= min_threshold}
# {'a': 4, 'b': 3}
Satish BV で説明されているように、辞書を理解してカウンターを反復できます。アイテム(またはより効率的なiteritemsを使用し、Python 2)を使用している場合)を使用して、(キー、値)タプルペアのシーケンスを取得し、それをカウンターに変換できます。
my_dict = {k: v for k, v in A.iteritems() if v >= min_threshold}
filteredA = Counter(my_dict)
または、元のカウンターを反復処理して、不要な値を削除することもできます。
for k, v in A.items():
if v < min_threshold:
A.pop(k)
以下の辞書からキーを削除できます3
:
for key, cnts in list(A.items()): # list is important here
if cnts < min_threshold:
del A[key]
それはあなたに与える:
>>> A
Counter({'a': 4, 'b': 3})
これは見栄えがいい:
{ x: count for x, count in A if count >= min_threshold }