web-dev-qa-db-ja.com

最小しきい値よりも発生回数が少ない要素を除外します

以下のコードを使用してリスト内の要素の出現回数を数えようとした後

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のみをどのようにフィルタリングしますか?

14
Satish BV

カウンターを作成し、次に、辞書の理解度を2番目のフィルタリング手順として使用します。

{x : A[x] for x in A if A[x] >= min_threshold}
# {'a': 4, 'b': 3}
18
cs95

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)
2
MikeCPT

以下の辞書からキーを削除できます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})
2
MSeifert

これは見栄えがいい:

{ x: count for x, count in A if count >= min_threshold }
1
Ido Zehori