gpt4 book ai didi

Python 覆盖字符串 __hash__

转载 作者:太空狗 更新时间:2023-10-30 00:07:51 24 4
gpt4 key购买 nike

我正在尝试为字符串创建自定义哈希函数。我想按权重按字符频率对字符串进行哈希处理。这样 hiih 将产生相同的散列。我可以覆盖 __hash__ 吗?

或者创建一个包含字符串并覆盖 __hash____eq__ 的包装类是唯一的方法吗?

最佳答案

你想要一个具有不同等式语义的派生类型。通常采用的方法是定义相等性如何工作,然后从那里派生的结构构建散列方法,因为散列必须符合相等性。那可能是:

import collections

class FrequencyString(str):
@property
def normalized(self):
try:
return self._normalized
except AttributeError:
self._normalized = normalized = ''.join(sorted(collections.Counter(self).elements()))
return normalized

def __eq__(self, other):
return self.normalized == other.normalized

def __hash__(self):
return hash(self.normalized)

关于Python 覆盖字符串 __hash__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com