Python 中的字典(Dictionary)是一种非常强大且常用的数据结构,它提供了键-值对之间的映射
关系,能够高效地存储和查找数据。在本篇博客中,可莉将带大家将深入了解 Python 字典的特
性、用法和一些常见操作~
创建字典
a = { } b = dict() //dict即代表着字典
上面相当于对字典进行了一个初始化,字典的创建依据以下规则:
键值对之间使用 , 分割, 键和值之间使用 : 分割
在初始化时添加键值对 :
student = { 'id': 1, 'name': 'zhangsan' } print(student)
为了代码的美观和可读性,我们可以将代码书写风格改为如下:
student = { 'id': 1, 'name': 'zhangsan' }
字典的特性
- 键的唯一性:字典中的键必须是唯一的,如果存在重复的键,则后面的键值对会覆盖前面的。
- 可变性:字典是可变的,可以动态地添加、删除或修改键值对。
- 无序性:字典中的键值对是无序的,即它们没有固定的顺序。
查找key
两种方法:① in , ② [ ]
in判定存在
student = { 'id': 1, 'name': 'zhangsan', } print('id' in student) print('score' in student)
运行结果为:
True
False
通过 [ ] 获取
student = { 'id': 1, 'name': 'zhangsan', } print(student['id']) print(student['name'])
我们可以使用 [ ] ,通过类似于取下标的方式, 获取到元素的值. 只不过此处的 "下标" 是 key. (可能是整数, 也可能是字符串等其他类型),用key来获取valve。
不存在情况
student = { 'id': 1, 'name': 'zhangsan', } print(student['noele']) print(student['name'])
当试图去查找一个不存在的key值时会进行如上图的报错。
get() 方法
还有一种对于查找key的方法
my_dict = { 'id': 1, #'name': 'zhangsan', } name = my_dict.get('name','unknow') print(name)
获取键为 'name' 的值,如果键不存在返回默认值 'Unknown',“unknow”可以是其他元素,相当于形参可以修改。如果没有填“unknow”位置的参数时,当没有key时默认返回none。
新增/修改元素
进行新添和修改元素时一般是使用 [ ] 来进行操作。因为字典的底层原理相当于是哈希映射,所以在添加顺序上不需要去进行特意的插入。
新添元素实现代码如下:
student = { 'id': 1, 'name': 'zhangsan', } student['score'] = 90 print(student)
修改元素:
当字典中已经存在key时对key进行操作
student = { 'id': 1, 'name': 'zhangsan', 'score': 80 } student['score'] = 90 print(student)
删除元素
我们一般使用pop 方法根据 key 删除对应的键值对:
student = { 'id': 1, 'name': 'zhangsan', 'score': 80 } student.pop('score') print(student
遍历字典元素
student = { 'id': 1, 'name': 'zhangsan', 'score': 80 } for key in student: print(key, student[key])
取出所有 key 和 value
# 获取所有键 keys = my_dict.keys() # 获取所有值 values = my_dict.values() # 获取所有键值对 items = my_dict.items()
通过以上方法即可得到需要得到的值。
合法的key类型
因为字典的原理就是哈希表,所以我们所设置的key也必须是可哈希的。
print(hash(0)) print(hash(3.14)) print(hash('hello')) print(hash(True)) print(hash(())) # ( ) 是一个空的元组
以上值均为可哈希的值,他们都有共同的特点,就是是固定的值不会改变,包括元组。
有可以作为key值的当然也有不能作为key值的:
- 列表
- 字典
如上两种类型都是可以改变的,我们可以通过一系列操作来改变列表和元组内部元素或键值对,所以他们作为可变的量导致他们无法作为字典中的key。
可莉敲黑板(小结)
字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的。当遇到需要表示 "键值对映射"
这种场景时就可以考虑使用字典了~
下面是一个在底层实现方法上字典和列表所体现出来的一些差异~(来源于汤神)
那么这篇博客到此结束啦~ 大家下篇见!