一、查看元素
除了使用key查找数据,还可以使用get来获取数据
info = {'name':'班长','age':18}
print(info['age']) # 获取年龄
# print(info['sex']) # 获取不存在的key,会发生异常
print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常
# 使用字典的get方法,如果key不存在,会默认返回 None,而不报错
print(info.get('sex', '男')) # 获取不存在的key, 可以提供一个默认值
# 如果根据key获取不到value,使用给定的默认值
二、修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
# 如果key存在,是修改key对应的value;
demo:
info = {'name':'班长', 'id':100}
print('修改之前的字典为 %s:' % info)
info['id'] = 200 # 为已存在的键赋值就是修改
print('修改之后的字典为 %s:' % info)
结果:
修改之前的字典为 {'name': '班长', 'id': 100}
修改之后的字典为 {'name': '班长', 'id': 200}
三、添加元素
如果在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
demo:添加新的元素
info = {'name':'班长'}
print('添加之前的字典为:%s' % info)
info['id'] = 100 # 为不存在的键赋值就是添加元素
print('添加之后的字典为:%s' % info)
结果:
添加之前的字典为:{'name': '班长'}
添加之后的字典为:{'name': '班长', 'id': 100}
四、删除元素
对字典进行删除操作,有一下几种:
- del :可以通过键删除字典里对应的值
- clear():用来清空一个字典
- pop():把name对应的键值对删除了,执行结果是被删除的value
- popitem():
demo:del删除指定的元素
info = {'name':'班长', 'id':100}
print('删除前,%s' % info)
del info['name'] # del 可以通过键删除字典里的指定元素
print('删除后,%s' % info)
结果
删除前,{'name': '班长', 'id': 100}
删除后,{'id': 100}
del删除整个字典
info = {'name':'monitor', 'id':100}
print('删除前,%s'%info)
del info # del 也可以直接删除变量
print('删除后,%s'%info)
结果
删除前,{'name': 'monitor', 'id': 100}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'info' is not defined
clear清空整个字典
info = {'name':'monitor', 'id':100}
print('清空前,%s'%info)
info.clear()
print('清空后,%s'%info)
结果
清空前,{'name': 'monitor', 'id': 100}
清空后,{}
pop:删除指定的键值,可以打印删除的值
person = {'name': 'zhangsan', 'age': 18, 'addr': '襄阳'}
# 把name对应的键值对删除了,执行结果是被删除的value
x = person.pop('name')
print(x) # lisi
print(person)
popitem: 删除一个元素,结果是被删除的这个元素组成的键值对(popitem随机的弹出一个字典项。)
//
# popitem 删除一个元素,结果是被删除的这个元素组成的键值对
result = person.popitem()
print(result) # ('gender', 'female')
print(person)
五、字典的其他函数
(1)update:合并两个字典
person1 = {'name': 'zhangsan', 'age': 18}
person2 = {'addr': '襄阳', 'height': 180}
person1.update(person2)
print(person1)
(2)copy:返回一个新字典,其包含的 键-值与原来的相同(这个方法是浅复制 ,因为值本身是原件,而非副本)
(3)deepcopy:深复制,同时 复制值及包含的所有值。可以使用 模块 copy中的函数
(4)fromkeys:创建一个新字典,其中包含指定的键,且每个键对应的值是None。
(5)items 返回一个包含所有字典项的列表,其中的每个元素都为(key,value)的形式。字典项在列表中的排序不确定。
person = {'name': 'zhangsan', 'age': 18, 'height': '180cm'}
x = person.items()
print(list(x))
#输出
[('name', 'zhangsan'), ('age', 18), ('height', '180cm')]
(6)setdefault :有点像get,因为它也是获取指定键相关联的值,除此之外,还在字典不包含指定的键时,在字典中添加指定的 键-值对。
d = {'name': 'hack', 'age': 18, 'height': '180cm'}
# 获取键相关联的值
print(d.setdefault('name'))
#如果指定的键不存在,就会添加对应的键值对,更新字典
print("---------------------------")
print(d.setdefault('sex','男'))
print(d)
# 输出的结果
hack
---------------------------
男
{'name': 'hack', 'age': 18, 'height': '180cm', 'sex': '男'}