Python 2.7和3.2添加了collections.Counter
该类,它是一个字典子类,可将元素映射到该元素的出现次数。可以用作多集。您可以执行以下操作:
from collections import Counter
a = Counter([0, 1, 2, 1, 0])
b = Counter([0, 1, 1])
c = a - b # ignores items in b missing in a
print(list(c.elements())) # -> [0, 2]
同样,如果您要检查其中的每个元素b
都在中a
:
# a[key] returns 0 if key not in a, instead of raising an exception
assert all(a[key] >= b[key] for key in b)
但是由于您坚持使用2.5,因此可以尝试将其导入并定义自己的版本(如果失败)。这样,您将确保获得最新版本(如果有),如果没有,则回落到可用版本。如果将来将其转换为C实现,您还将从速度改进中受益。
try:
from collections import Counter
except ImportError:
class Counter(dict):
...
您可以在此处找到当前的Python源。