【问题标题】:Relevant method to include for collections.Counter包含用于 collections.Counter 的相关方法
【发布时间】: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


【解决方案1】:

如果a == b 那么hash(a) == hash(b)

你需要实现__hash__()__eq__()

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 2021-10-20
    • 2014-01-31
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多