当前位置: 首页 > 图灵资讯 > 行业资讯> Python中哈希结构有哪几种?

Python中哈希结构有哪几种?

来源:图灵python
时间: 2024-09-09 10:15:09

在对哈希结构的讨论中,我们已经在数组中使用了它,只是通过标记来定位某个数据。然后,我们学到的一些python知识点也会反映出一些哈希结构。本文将讨论字典和集合。具体的哈希结构将分别介绍这两个方面。让我们来看看季节的内容。

1、字典

PyDictKeysobject定义了字典哈希表的一些字段。有两个数组 dk_indices[] 和 dk_entries[],这两个是真正存储数据的数组。kv dk_数据保存entries[]在数组中,dk_indices[]来存储 kv dk_enties数组中保存的数据索引。其中每个 kv 以entry的数据结构存储数据,如下:

typedefstruct{
/*Cachedhashcodeofme_key.*/
Py_hash_tme_hash;
PyObject*me_key;
PyObject*me_value;/*Thisfieldisonlymeaningfulforcombinedtables*/
}PyDictKeyEntry;

me_hash缓存 key 防止哈希值重复计算。me_key和me_value就是 key 和 value 真实数据。

2、集合

和字典一样,底层也是哈希结构。与字典相比,只能理解为 key,没有 values。

与字典相比,集合要简单得多。存储数据的数组直接保存在Pysetobject中。

根据收集的底层数据结构分析,也用于解决哈希冲突「开发寻址法」。

一些常见的集合操作:

#初始化
s1={'1','2','3'}#不推荐,当元素中有字典时,会报错
s2=set(['1','4','5'])
print#{'(s1);3','1','2'}
print(二、#{'3','1','2'}

#交集
print(s1&二、#{'1'}
#并集
print(s1|二、#{'3','5','4','2','1'}
#差集
print(s1-s2)#{#39;3','2'}
#判断子集和超集
s2.issubset(s1)#s2是否为s1子集
s1.issuperset(s2)#s1是否为s2超集

#一些内部建筑方法的集合
#set.add(obj)添加集合元素
#set.remove(obj)删除集合元素
#set.update(set)合并集合
#set.pop()随机删除一个元素,并返回元素

以上是Python中哈希结构的两种解释。对于字典和集合的学习,可以结合哈希结构的内容进行深入探索,学习后可以练习代码部分。