【问题标题】:Python3 hashing function overridePython3 散列函数覆盖
【发布时间】:2013-10-22 12:51:52
【问题描述】:

有谁知道python3使用什么样的哈希函数?有没有办法重新实现函数接受列表作为键?

【问题讨论】:

    标签: python python-3.x dictionary


    【解决方案1】:

    hash() function;对象类型实现__hash__ hook function

    不,你不能让它接受lists,但是list 的子类可以工作。请注意,不保持键的散列相等性测试稳定破坏您的字典。

    不过,您最好将 tuples 存储为键。把一个列表变成一个元组很简单:

    my_dictionary[tuple(my_list)] = my_value
    

    【讨论】:

    • 如果项目的顺序不重要,也可以使用frozenset 作为列表的可散列等效项。
    • 感谢提示“不保持密钥的哈希和相等性测试稳定会破坏您的字典”为我节省了很多调试时间.. :-)
    猜你喜欢
    • 2012-11-10
    • 2010-10-25
    • 1970-01-01
    • 2020-12-23
    • 2018-02-05
    • 1970-01-01
    • 2010-10-30
    • 2015-03-12
    • 2011-05-31
    相关资源
    最近更新 更多