Python で bag/multiset のようなデータ型が必要です。私はコレクションを理解しています。カウンターはこの目的でよく使用されます。しかし、比較演算子は機能していないようです:
In [1]: from collections import Counter
In [2]: bag1 = Counter(a=1, b=2, c=3)
In [3]: bag2 = Counter(a=2, b=2)
In [4]: bag1 > bag2
Out[4]: True
これは私にはバグのようです。小なり演算子と大なり演算子がセットのようなサブセットとスーパーセットの比較を実行することを期待していました。しかし、その場合はbag1 > bag2
false になります。なぜならbag2
、extra が含まれているから'a'
です。Counter オブジェクトにはサブセット/スーパーセット メソッドもないようです。だから私は2つの質問があります:
- Counter オブジェクトに使用される比較ロジックは何ですか?
- サブセット、スーパーセット、適切なサブセット、および適切なスーパーセットの Counter オブジェクトを比較するにはどうすればよいですか?