极客小将

您现在的位置是:首页 » 原创课程 » Python

课程内容

Python入门课程NO50课 字典类型的高级理解

极客小将2020-08-19-
1、键的输出顺序Python中的字典类型基于哈希表,在Python3.6版本前,字典中的键的输出顺序取决于键在哈希表中的存储顺序,从Python3.6版本以后,字典中的键的输出顺序按其插入的先后顺序进行输出。Python3.6后版本的程序输出为:    name     price

1、键的输出顺序

Python中的字典类型基于哈希表,在Python3.6版本前,字典中的键的输出顺序取决于键在哈希表中的存储顺序,从Python3.6版本以后,字典中的键的输出顺序按其插入的先后顺序进行输出。

Python3.6后版本的程序输出为:    name     price

Python3.6前版本的输出可能为:     price    name

2、键的数据类型

字典中的键的数据类型必须是静态的数据类型,迄今为止学过的静态的数据类型有:简单数据类型,字符串,元组。列表和字典类型是不可哈希的类型。

3、字典的快速查找

字符串,列表,元组是一种线性的序列结构,在不对序列结构进行任何处理时,对元素进行查找需要从头到尾地进行遍历。假设列表中包含1百万个元素,那么按这种方式来查找,最慢需要比较1百万次,才能判定元素是否存在于列表中。由此可分析,当数据量很大时,使用列表等序列结构来进行元素查找,效率十分低下。字典类型采用哈希表进行实现,在理想情况下,只需计算一次键名的哈希值,就可以快速地查找元素是否存在于数据集合中,即使数据集合中存在百万级,甚至千万级,亿万级的数据量。那么我们接下来介绍哈希表。

4、哈希表结构

哈希表中的编号即为键名的哈希值,数据表中存储了哈希值,以及键名,键值。Python字典的底层实现中,并非直接存储键名,键值,存储的是它们的引用。哈希(hash)函数又称为散列函数,计算键名的哈希值,就是将字典中的键名转换为对应的数字编号。现在来写个简单的代码,来比较列表和字典的查找性能。

从程序的输出可知,字典的查找速度几乎是列表的1000倍,数据量越大,查找性能越明显。

网友点评

共有5条评论来说两句吧...