🌈个人主页: 会编程的果子君
💫个人格言:“成为自己未来的主人~”
目录
字典是什么
创建字典
查找key
新增/修改元素
删除元素
遍历字典元素
取出所有的key和value
合成的key类型
编辑
小结
字典是什么
字典是一种存储键值对的结构
啥是键值对?这是计算机/生活中一个非常广泛使用的概念
把键(key)和值(value)进行一个一对一的映射,然后就可以根据键,快速找到值
创建字典
- 创建一个空的字典,使用{}表示字典
a={} b=dict() print(type(a)) print(type(b))
- 也可以在创建的同时指定初始值
- 键值对之间使用,分割,键和值之间使用:分割,(置号后面推荐加一个空格)
- 使用print来打印字典内容
student={'id':1,'name':'zhangsan'}
print(student)
- 为了代码更规范美观,在创建字典的时候往往会把多个键值对,分成多行来书写
student={ 'id':1, 'name':'zhangsan' }
- 最后一个键值对,可以写,,也可以不写
student={
'id':1,
'name':'zhangsan',
}
查找key
- 使用 in 可以判定 key 是否在字典中存在,返回布尔值
student={
'id':1,
'name':'zhangsan',
}
print('id'in student)
print('score' in student)
- 使用 [ ] 通过类似于取下标的方式,获取到元素的值,只不过此处的“下标”是key(可能是整数,也可能是字符串等其他类型)
student={ 'id':1, 'name':'zhangsan', } # print('id'in student) # print('score' in student) print(student['id']) print(student['name'])
-
如果key在字典中不存在,则会抛出异常
student={ 'id':1, 'name':'zhangsan', } print(student['score'])
新增/修改元素
使用 [ ] 可以根据 key 来新增/修改value
- 如果 key 不存在,对取下标操作赋值,即为新增键值对
student={ 'id':1, 'name':'zhangsan', } student['score']=90 print(student)
-
如果key已经存在,对取下标操作赋值,即为修改键值对的值
student={ 'id':1, 'mame':'zhangsan', 'score':80, } student['score']=90 print(student)
删除元素
- 使用pop方法根据key删除对应的键值对
student={ 'id':1, 'name':'zhangsan', 'score':80, } student.pop('score') print(student)
遍历字典元素
- 直接使用 for 循环能够获取到字典中的所有key,进一步就可以取出每一个值了
student={ 'id':1, 'name':'zhangsan', 'score':80 } for key in student: print(key,student[key])
取出所有的key和value
- 使用 keys 方法可以获取到字典中的所有的key
student={ 'id':1, 'name':'zhangsan', 'score':80 } print(student.keys())
此处的dict_keys是一个特殊的类型,专门用来表示字典的所有key,大部分元组支持的操作对于dict_keys同样适用
- 使用values方法可以获取到字典中的所有value
student={ 'id':1, 'name':'zhangsan', 'score':80 } print(student.values())
此处的dict_values也是一个特殊的类型,和dict_keys类似
- 使用items方法可以获取到字典中所有的键值对
student={ 'id':1, 'name':'zhangsan', 'score':80 } print(student.items())
合成的key类型
不是所有的类型都可以作为字典的key
字典本质上是一个哈希表,哈希表的key要求是“可哈希的”,也就是可以计算出一个哈希值
- 可以使用hash函数计算某个对象的哈希值
- 但凡能够计算出哈希值的类型,都可以作为字典的key
print(hash(1)) print(hash('hello')) print(hash(True)) print(hash(()))
-
列表无法计算哈希值
print(hash([1,2,3]))
-
字典也无法计算哈希值
print(hash({'id':1}))
小结
字典也是一个常用的结构,字典的所有操作都是围绕 key 来展开的,需要表示“键值对映射”这种场景时就可以考虑使用字典