python中可哈希的数据类型,python中哈希表用法

  python中可哈希的数据类型,python中哈希表用法

  关于hash结构的讨论,我们在数组中用过,简单来说就是通过下标定位某类数据的方法。然后,我们学过的一些python知识点也会展示一些hash结构。这篇文章是关于字典和集合的。具体的hash结构将在这两个方面分别介绍。下面我们一起来看看内容。

  1、字典

  PyDictKeysObject定义了字典哈希表的一些字段.有两个数组,dk _ indexes []和dk_entries[],是存储数据的实数组。Kv数据存储在dk_entries[]数组中,DK _ indexes []用于存储dk_enties数组中存储的kv数据的索引。其中每个kv数据存储在如下条目的数据结构中:

  typedefstruct{

  /*Cachedhashcodeofme_key。*/

  Py _哈希_ tme _哈希;

  PyObject * me _ key

  PyObject * me _ value/* Thisfieldisonlymeaningfulforcombinedtables */

  } PyDictKeyEntryme_hash缓存存储键的哈希值,防止哈希值的重复计算。Me_key和me_value是键和值的真实数据。

  2、集合

  像字典一样,底层也是哈希结构,与字典相比,可以理解为只有键,而没有值。

  与字典相比,收藏要简单得多。存储数据的数组直接保存在PySetObject中。

  根据对集合底层数据结构的分析,它还使用了“开发寻址法”来解决哈希冲突。

  集合的一些常见操作:

  #初始化

  S1={1 , 2 , 3}#不推荐。当元素中有字典时,将会报告一个错误。

  s2=集合([1 , 4 , 5])

  print(s1)#{3 , 1 , 2}

  print(s2)#{3 , 1 , 2}

  #交叉路口

  print(s1s2)#{1}

  #工会

  print(s1s2)#{3 , 5 , 4 , 2 , 1}

  #差异集

  打印(s1-s2)#{3 , 2}

  #判断子集和超集

  S2.issubset(s1)#s2是s1的子集吗?

  S1 . issuperset(S2)# S1 S2的超集?

  #集合的一些内置方法

  #set.add(obj)添加一个集合元素

  删除一个集合元素

  #set.update(set)合并集合

  #set.pop()随机删除一个元素并返回。以上是Python中hash结构的两种解释。对于字典和集合的学习,可以结合hash结构的内容进行深入探索。学完之后,就可以练习代码部分了。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: