次のようなデータがあるとします。
Lucy = 1
Bob = 5
Jim = 40
Susan = 6
Lucy = 2
Bob = 30
Harold = 6
組み合わせたい:
- 重複するキーを削除し、
- これらの重複キーの値を追加します。
つまり、キー/値を取得します。
Lucy = 3
Bob = 35
Jim = 40
Susan = 6
Harold = 6
これには(コレクションから)カウンターまたはデフォルトの辞書を使用する方がよいでしょうか?
次のようなデータがあるとします。
Lucy = 1
Bob = 5
Jim = 40
Susan = 6
Lucy = 2
Bob = 30
Harold = 6
組み合わせたい:
つまり、キー/値を取得します。
Lucy = 3
Bob = 35
Jim = 40
Susan = 6
Harold = 6
これには(コレクションから)カウンターまたはデフォルトの辞書を使用する方がよいでしょうか?
Counter
ここではとの両方defaultdict(int)
が正常に機能しますが、両者にはいくつかの違いがあります。
Counter
は、マルチセットに対して実行できるほとんどの操作をサポートしています。したがって、それらの操作を使用する場合は、カウンターを選択してください。
Counter
欠落しているキーを照会するときに、辞書に新しいキーを追加しません。したがって、クエリに dict に存在しない可能性のあるキーが含まれている場合は、 を使用することをお勧めしますCounter
。
例:
>>> c = Counter()
>>> d = defaultdict(int)
>>> c[0], d[1]
(0, 0)
>>> c
Counter()
>>> d
defaultdict(<type 'int'>, {1: 0})
例:
Counter
most_common
また、アイテムをその数でソートできるメソッドもあります。同じものを取得するには、defaultdict
を使用する必要がありますsorted
。例:
>>> c = Counter('aaaaaaaaabbbbbbbcc')
>>> c.most_common()
[('a', 9), ('b', 7), ('c', 2)]
>>> c.most_common(2) #return 2 most common items and their counts
[('a', 9), ('b', 7)]
Counter
Counter オブジェクトから要素のリストを作成することもできます。例:
>>> c = Counter({'a':5, 'b':3})
>>> list(c.elements())
['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b']
したがって、結果の dict で何をしたいかによって、 と の間Counter
で選択できますdefaultdict(int)
。