【发布时间】:2020-07-23 20:15:29
【问题描述】:
抱歉,如果这是网站上的重复(我四处搜索但找不到答案)。假设我有一个用 Python 实现的带有名称和年龄参数的 Person 类,例如 Person('Bob', 25)。假设我创建了一个Person 对象列表,我想知道每个实例有多少;例如,我可能有[Person('Bob', 25), Person('Sally', 40'), Person('Bob', 25), Person('Sarah', 30)]。所以有两个Person('Bob', 25) 实例和1 个剩余实例;如果要在此对象列表上运行 collections.Counter,它将正确返回。
我的问题是:collections.Counter 究竟在数据结构中寻找什么以使计数正确?我有一个更复杂(但可散列)的类,并且 collections.Counter 没有正确计算元素的数量。我确定这是因为定义中缺少一些方法,但我不确定它是什么。
【问题讨论】:
-
您需要的基本方法是
__hash__()和__eq__(),要求任何两个比较相等的对象都必须返回相同的哈希。 -
@jasonharper 确实包括解决它的 __eq__() 方法。谢谢!
标签: python python-3.x class counter