30

として宣言されたカウンターがmain_dict = Counter()あり、値は として追加されmain_dict[word] += 1ます。最後に、頻度が 15 未満のすべての要素を削除します。これを行う機能はありますかCounters

どんな助けでも感謝します。

4

7 に答える 7

23
>>> from collections import Counter
>>> counter = Counter({'baz': 20, 'bar': 15, 'foo': 10})
>>> Counter({k: c for k, c in counter.items() if c >= 15})
Counter({'baz': 20, 'bar': 15})
于 2013-04-07T11:52:13.327 に答える
16

Another method:

c = Counter({'baz': 20, 'bar': 15, 'foo': 10})
print Counter(el for el in c.elements() if c[el] >= 15)
# Counter({'baz': 20, 'bar': 15})
于 2013-04-07T11:50:05.713 に答える
2

別の解決策を提案できますか

from collections import Counter
main_dict = Counter({'baz': 20, 'bar': 15, 'foo': 10})  
trsh = 15

main_dict = Counter(dict(filter(lambda x: x[1] >= trsh, main_dict.items())))
print(main_dict)

>>> Counter({'baz': 20, 'bar': 15})

また、同じ問題がありますが、Counter からすべてのキーのリストを、あるしきい値を超える値で返す必要があります。これをする

keys_list = map(lambda x: x[0], filter(lambda x: x[1] >= trsh, main_dict.items()))
print(keys_list) 

>>> ['baz', 'bar']
于 2018-02-05T16:18:26.143 に答える
2

しきい値がゼロの場合のエレガントなソリューション:

main_dict += Counter()
于 2019-04-23T15:16:57.453 に答える