【发布时间】:2015-04-11 08:12:23
【问题描述】:
如何使用以下定义测试 python Counter 是否包含在另一个中:
计数器
a包含在计数器b中当且仅当对于a中的每个键k,值a[k]小于或等于值@987654328 @。Counter({'a': 1, 'b': 1})包含在Counter({'a': 2, 'b': 2})中,但不包含在Counter({'a': 2, 'c': 2})中。
我认为这是一个糟糕的设计选择,但在 python 2.x 中,比较运算符(<、<=、>=、>)不使用之前的定义,因此第三个 Counter 被认为 大于 第一个。而在 python 3.x 中,Counter 是一个不可排序的类型。
【问题讨论】:
-
您应该正确定义“包含”以避免混淆。
-
Counter实际上并不支持比较运算符。 -
@JimDennis:我们应该将 Counter 视为一个多重集,而这种尝试没有考虑到元素的多样性。
-
@JimDennis:不,我不想检查是否所有键都存在,我还想检查多重性,因为 user2347112 说:计数器 a 包含在计数器 b 中当且仅当对于 a 中的每个键 k,值 a[k] 小于或等于值 b[k]。
标签: python algorithm counter inclusion