优草派  >   Python

python中哈希结构有哪几种?python哈希表中常用的数据结构有哪些?

翟嘉慧            来源:优草派

前面对哈希表的学习,我们已经在数组中有所使用,简单的来说就是通过下标定位某一种数据的方法。那么,我们学习的一些python知识点,也会体现出一些哈希结构。本篇所要讲的是字典和集合这两种,关于具体的哈希结构会就这两个方面分别展开介绍,下面一起来看看这篇文章吧。

python中哈希结构有哪几种?python哈希表中常用的数据结构有哪些?

1、字典

在Python字典的使用中,包含了哈希表中的一些字段,其中有两个数组是可以用来真正的存储数据的,它们分别是dk_indices[]和dk_entries[],将kv数据保存在dk_entries[]数组中,dk_indices[]来存储kv数据在dk_enties数组中保存的索引。其中每个 kv 数据以entry的数据结构来存储,如下:

typedef struct {
使用me_key的方式缓存哈希代码
    Py_hash_t me_hash;
    PyObject *me_key;
    PyObject *me_value; 这个字段只在哈希表中有一定的意义。
} PyDictKeyEntry;

在代码中,使用me_hash缓存存key的哈希值,这是为了防止哈希值的重复计算。me_key和me_value便是key和value的真正数据了。

2、集合

在集合的操作中,和字典是差不多的,使用的底层数据也是哈希结构,但是和字典进行比较的话,它只有key,并没有values,相对于字典来说,集合的使用是比较的简单的,它在集合和字典一样,底层也是哈希结构,和字典相比,可理解为只有 key,没有 values。

它在PySetObject中可以直接保存存储数据为数组。根据集合的底层数据结构分析,它解决哈希冲突也是使用的「开发寻址法」。

以上就是python中哈希结构有哪几种?python哈希表中常用的数据结构有哪些?的两种讲解方法,对于字典和集合的学习,大家可以结合哈希结构的内容进行深入探索,学会后可以就代码部分进行练习。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。