在python中使用散列函数作为dictionary中的键



我正在创建一个项目(在python 3.3中),我正在努力弄清楚是否有一种有效(或更漂亮的方法)来完成以下操作。

我有一个提取二进制/十六进制字符串的函数,如下所示(成组的位仅用于示例目的)

  • 0000 1111 0002 0001
  • 0000 1111 0003 0001
  • 0000 1111 0002 0002
  • 0000 1110 0002 0001

现在,我想做的是能够将这些传递到一个函数中,然后根据第二组比特和第四组比特(即操作码)中的值将它们激发到一个方法中例如;散列函数,该散列函数将检查(*1111*0001)是否匹配,然后返回与这些比特相关的函数。

我有过使用哈希表词典的想法,但我不完全确定如何将键作为掩码。

虽然我可以用键11110001和我想要返回的函数值制作一个字典,然后只需插入并传递[4:8][12:16]就可以了,但我想知道是否有办法为键制作哈希函数。(如果这有意义的话),而不需要进入一个类并重写哈希函数,然后将其传入。

也许是某种形式的数据结构,存储regex键并在任何有效输入上执行它?-虽然我可以创建一个,但我想知道我是否缺少某种形式的内置功能(只是为了不重新发明轮子)

希望这是有道理的!谢谢你的帮助!

绝对没有理由避免用__hash____eq__实现一个小类。字典确实支持自定义散列函数,这就是实现它的方法:

KEY_MASK = 0xf0f0  # or whichever mask you need
class Key(object):
    __slots__ = 'num',
    def __init__(self, num):
        self.num = num
    def __hash__(self):
        return hash(self.num & KEY_MASK)
    def __eq__(self, other):
        return self.num & KEY_MASK == other.num & KEY_MASK
    def __ne__(self, other):
        return not self == other

假设您实际上使用的是示例中的位值,那么为什么不从字典中派生一个字典呢?该字典有一个新方法getmask,它在查找之前屏蔽值。。。

相关内容

  • 没有找到相关文章

最新更新