Wil*_*eed 5 python comparison multiset python-collections
我需要Python中的bag / multiset-like数据类型。我了解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
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎是一个错误。我期望小于和大于运算符执行类似集合的子集和超集比较。但是,如果真是这样,那bag1 > bag2将是错误的,因为bag2其中包含一个额外的'a'。Counter对象上似乎也没有子集/超集方法。所以我有两个问题:
在 Python 2 上,比较会回退到字典的默认排序顺序(Counter是 的子类dict)。
当且仅当它们的排序(键,值)列表比较相等时,映射(字典)才比较相等。[5] 除平等之外的结果得到一致解决,但没有另外定义。[6]
在 Python 3 上,比较会产生TypeError:
当且仅当映射(字典)具有相同的(键,值)对时,它们才比较相等。顺序比较('<'、'<='、'>='、'>') raise
TypeError。
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |