字典(dictionary)
字典的含义和表示都与其语义相似,就像我们小时候查找汉字,可以通过拼音字母(或笔画)进行检索。我们可以自己定义Python中的字典名字,然后通过这个名字查找到对应的数值。其中的名字叫作“键(key)”,对应的数值简称“值(value)”,所以字典也称“键值对”。需要注意的是,字典没有顺序一说,所有的值仅能用键获取。
简而言之,字典被看作无序的键值对或有名字的元素列表。
一、字典的创建与使用
字典的内容放在花括号内,键值对以英文冒号连接,不同的键值对以英文逗号隔开。
d=dict() #创建一个空字典 d2={} #创建一个空字典 d3={'name':'Jack','age':18} print(d3['name']) #'Jack' 获取键的值
注意:1、每次输出字典中键值对的顺序可能是不同的。
2、字典里的key不允许重复,如果key重复了,后一个key对应的值会覆盖前一个值。
3、字典里的key只能是不可变数据类型(可哈希),一般使用字符串,value可以是任意数据类型。
字典有键与值的区分,那么该如何获取键与值的内容呢?为此Python提供了三个方法,分别是keys()、values()和items()。
info={'name':'jack', 'age':18, 'gender':'male' } print(info.keys()) # 取键 # dict_keys(['name', 'age', 'gender']) print(info.values()) # 取值 # dict_values(['jack', 18, 'male']) print(info.items) # 取键值对 # dict_items([('name', 'jack'), ('age', 18), ('gender', 'male')]) for k,v in info.items(): # 遍历键值对 print(k, v) # name jack # age 18 # gender male
二、字典的增删改查
1.增加
如果在使用 字典名['键']=数据 时,“键”在字典中不存在,那么就会新增这个元素。
student={"name":"Jack"} student['age']=20 #为不存在的键赋值就是添加元素 print(student) #{"name":"Jack","age":20}
2.删除
对字典进行删除操作,有以下几种:
- pop(键) : 删除字典里指定的键值对,返回对应的值。如键不存在,报错。
- popitem():删除字典里随机一组键值对,返回是被删除元素的键值对(元组)
- del 字典名[键]:删除指定的键值对,如键不存在,报错。
- clear():清空字典
student={'name':'Jack','age':20,'gender':'female'} s=student.pop('age') print(s) # 20 s1=student.popitem() #随机删除一组键值对 print(s1) # ('gender', 'female') del student['name'] #删除指定的键值对
3.修改
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改。
student={'name':'Jack':'age':18} print('修改之前的字典是%s:'%student) student['age']=20 #为已存在的key赋值就是修改 print('修改之后的字典是%s:'%student)
运行结果:
修改之前的字典为{'name':'Jack','age':18} 修改之后的字典为{'name':'Jack,'age':20}
4.查询
student={'name':'Jack':'age':18} print(student['name']) #'Jack' print(student['sex']) #获取不存在的key,会报错 print(student.get('age')) # 18 print(student.get('sex')) #获取不存在的key,获取到空的内容,不报错 print(student.get('sex','男')) #获取不存在的key,可以提供一个默认值。
注意:获取默认值不会修改字典内容。
5.update方法的使用
列表可以使用extend方法将两个列表合并成为一个列表。
字典可以使用update方法将两个字典合并成为一个字典。
s1={'name':'Jack','age':20} s2={'gender':'female'} s1.update(s2) print(s1) # {'name': 'Jack', 'age': 20, 'gender': 'female'} print(s1+s2) #报错,字典间不支持加法运算
三、字典推导式
student = {'name': 'Jack', 'age': 18} s = {v: k for k, v in student.items()} print(s) # {'Jack': 'name', 18: 'age'}