学习目标:掌握字典嵌套,存储更丰富的联系人信息。
-
练习任务:
-
改造字典,使每个联系人的值也是一个字典,包含
phone,email,address等字段。例如:contacts = { '张三': {'phone': '13800138000', 'email': 'zhangsan@example.com', 'address': '北京'}, '李四': {'phone': '13912345678', 'email': 'lisi@example.com', 'address': '上海'} } -
实现添加联系人(包含多个信息)、修改联系人的某个字段、删除联系人。
-
实现查询功能:输入姓名,显示该联系人的所有信息。
-
使用嵌套循环打印所有联系人的详细信息(格式整齐)。
-
扩展:允许用户选择更新某个具体字段。
-
字典内置函数和方法
len函数
计算字典元素的个数,就是键的个数
str函数
输出字典,以字符串形式表示
copy方法
浅复制一个字典
浅拷贝:拷贝父对象,不拷贝子对象
深拷贝:即拷贝父对象,又拷贝子对象\
fromkeys方法
创建一个新字典,以val为新字典的初始值
语法:dict.fromkeys(seq[,value])
seq:字典键值列表
value:设置键序列对应的值(可选)默认为None
get方法
返回指定键的值,如果该键不存在时,返回默认值。如果没有指定默认值则返回None
语法:dict.get(key[,value])
key:字典中要查找的键
value:如果键值不存在时,返回该默认值。
key in dict
查找键是否在字典当中
返回true键存在,返回false键不存在
items方法
以列表返回一个字典的视图对象
keys方法
以列表返回一个字典键的视图对象
values方法
以列表返回一个字典值的视图对象
setdefault方法
返回指定键的值,如果不存在会添加键并将其设置为默认值(None)\
popitem方法
返回并删除字典中最后一对键值
练习任务
改造字典,使每个联系人的值也是一个字典,包含 phone, email, address 等字段.
contacts = {
'张三': {'phone': '13800138000', 'email': 'zhangsan@example.com', 'address': '北京'},
'李四': {'phone': '13912345678', 'email': 'lisi@example.com', 'address': '上海'}
}
实现添加联系人(包含多个信息)、修改联系人的某个字段、删除联系人。
contacts['王五']={'phone':'1394326457','email':'324567@qq.com','address':'深圳'}
实现查询功能:输入姓名,显示该联系人的所有信息。
name=input('请输入姓名: ')
print(contacts.get(name,'该姓名没有记录'))
使用嵌套循环打印所有联系人的详细信息(格式整齐)。
for name,info in contacts.items():
print(f'{name}:')
for k,v in info.items():
print(f'{k}:{v}')
扩展:允许用户选择更新某个具体字段。
while 'true':
asm = input("请输入要更新的姓名:")
if asm not in contacts:
contacts[asm] = {}
asm1=input("请输入要更新的字段:")
asm2=input("请输入要更新{asm1}的内容:")
contacts[asm][asm1]=asm2
print(contacts)
yn_input=input("是否继续输入(y是n否):")
if yn_input == 'n':
break