美文网首页程序员《做与学系列》
疯狂的Python-02(不变的哈希值)

疯狂的Python-02(不变的哈希值)

作者: 景行1023 | 来源:发表于2018-09-03 22:29 被阅读13次

一些有趣的鲜为人知的Python特性集合

无论你是Python新手还是Python老手,我相信,这个系列的文章都会让你获益良多!

阅读此系列任何文章前请务必观看:疯狂的Python-目录大纲


▶ 不变的哈希值

1.

some_dict = {}
some_dict[5.5] = "Ruby"
some_dict[5.0] = "JavaScript"
some_dict[5] = "Python"

Output:

>>> some_dict[5.5]
"Ruby"
>>> some_dict[5.0]
"Python"
>>> some_dict[5]
"Python"

"Python" 把之前的 "JavaScript" 覆盖掉了吗?

💡 解释

  • Python的字典结构是根据key值的哈希值判断两个key值是否相等的
  • 在Python中,不变对象(Immutable objects)的值如果一样,那么它们的哈希值肯定也一样
    >>> 5 == 5.0
    True
    >>> hash(5) == hash(5.0)
    True
    
    注意: 有些对象有不同的值,但是它们的哈希值也有可能是一样的(所谓的哈希冲突)
  • some_dict[5] = "Python"这句话执行的时候, "Python"这个字符串就会覆盖掉"JavaScript"这个值,因为在Python看来,55.0的哈希值是一样的,也就是说对于字典结构他们对应的是一个key值。
  • 在 StackOverflow 上面有一个回答对Python的这个特性解释的很棒。

相关文章

  • 疯狂的Python-02(不变的哈希值)

    一些有趣的鲜为人知的Python特性集合 无论你是Python新手还是Python老手,我相信,这个系列的文章都会...

  • 计算文件哈希值

    什么是哈希值? 哈希值(hash values)是使用哈希函数(hash function)计算得到的值。哈希函数...

  • 【区块链】哈希算法在比特币系统作用

    比特币地址是由公钥经过单向的加密哈希算法生成。被广播的交易会有哈希值,每个区块也会有哈希值。 哈希算法和哈希值究竟...

  • 看图识:比特币区块及新区块生成过程

    上图说明:区块N:前一个区块的哈希值区块N+1:本区块的哈希值哈希值组合#ABCD:梅克莱根(也叫:默克树哈希值)...

  • 对象的equals和hashCode

    对象的 hashCode() 方法,为对象返回一个 哈希值。那什么是 哈希值 ? 这个词的解释有很多。 哈希值是...

  • Object类

    Object类的方法:public int hashCode():返回该对象的哈希码值。哈希码值是根据哈希算法计算...

  • hash值, 监控工具, umask, 分区, inode和bl

    1. hash值 对文件进行hash运算, 生成一段哈希值, 对比自己的哈希值和发送文件给其他人后的哈希值, 检验...

  • 分布式数据分布算法

    一、哈希分布 1、哈希取模 哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数...

  • MD5算法与upper

    1. 哈希值(hash value) 将任意长度的二进制映射为固定长度的二进制值,这个二进制值成为哈希值。哈希值是...

  • 12、字典的定义和常用操作

    字典包含哈希值和指向的对象 {"哈希值", "对象"} {'length':180, 'width': 8...

网友评论

    本文标题:疯狂的Python-02(不变的哈希值)

    本文链接:https://www.haomeiwen.com/subject/xkcwwftx.html