字典是根据键的哈希值来存储和查找值的,在字典(也称为哈希表或映射)这种数据结构中,每个键值对(key-value pair)的存储和查找操作都是基于键(key)的哈希值来进行的。哈希值是一个数字,它是通过应用一个哈希函数到键上得到的。这个哈希值决定了键值对在字典内部数组或链表中的位置。这种方法使得字典能够在平均情况下实现非常快速的查找、插入和删除操作,时间复杂度接近O(1)。
例子
假设我们有一个简单的字典,用来存储学生的名字和他们的年龄:
# 使用不可变类型作为键,任意类型作为值
my_dict = {
'name': 'Alice', # 字符串键,字符串值
'age': 30, # 字符串键,整数值
'is_student': False, # 字符串键,布尔值
'courses': ('Math', 'Science'), # 字符串键,元组值
'grades': { # 字符串键,字典值
'Math': 'A',
'Science': 'B'
},
'function': lambda x: x * 2 # 字符串键,函数值
}
# 尝试使用可变类型作为键(这将引发TypeError)
# wrong_dict = {[1, 2, 3]: 'This will not work'} # 列表是不可变的,不能用作键
-
哈希函数:当我们想要在这个字典中存储或查找一个键值对时,Python首先会对键(比如"Alice")应用一个哈希函数。这个哈希函数会将键转换成一个整数哈希值。例如,假设哈希函数将"Alice"转换为哈希值12345。
-
存储位置:然后,这个哈希值会被用来确定键值对在字典内部存储数组中的索引位置。为了简化,我们可以假设字典使用一个长度为10000的数组作为存储桶(bucket)。那么,键值对(

最低0.47元/天 解锁文章
1170

被折叠的 条评论
为什么被折叠?



