我需要 Python 中的类似包/多集的数据类型。我了解 collections.Counter 经常用于此目的。但是比较运算符似乎不起作用:
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
将是错误的,因为bag2
包含一个额外的'a'
. Counter 对象上似乎也没有子集/超集方法。所以我有两个问题:
- Counter 对象使用什么比较逻辑?
- 如何比较 Counter 对象的子集、超集、真子集和真超集?