字典(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'}