一、查看元素

除了使用key查找数据,还可以使用get来获取数据

  1. info = {'name':'班长','age':18}
  2. print(info['age']) # 获取年龄
  3. # print(info['sex']) # 获取不存在的key,会发生异常
  4. print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常
  5. # 使用字典的get方法,如果key不存在,会默认返回 None,而不报错
  6. print(info.get('sex' '男')) # 获取不存在的key, 可以提供一个默认值
  7. # 如果根据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:返回一个新字典,其包含的 键-值与原来的相同(这个方法是浅复制 ,因为值本身是原件,而非副本)

注意:如果在copy之前改变列表时,那么复制的列表也会变
image.png

(3)deepcopy:深复制,同时 复制值及包含的所有值。可以使用 模块 copy中的函数

image.png

(4)fromkeys:创建一个新字典,其中包含指定的键,且每个键对应的值是None。

image.png

(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': '男'}