# 对列表里面 嵌套的字典 的增删改查
1. 列表里面嵌套字典,对字典中数据的删除
注:两个简单的案例,昨天晚上我写了一个晚上,反反复复地修改,我对字典这里掌握的非常薄弱,所以就要不停地练习。一定要记住,代码是从上向下执行的!
①第一步,设置一个列表,里面嵌套字典,输出;
a = [{"ID": "1007"}, {"name": "张艺兴"}, {"age": "31"}]
print(f"删除前:{a}")
②第二步,通过while循环,进行对列表的删除功能的 实现;
③第三步,手写输入关键字,定位到具体删除哪个关键字的内容;
④第四步,设置一个哨兵变量,如果输入的关键字在列表里的字典能找到,就执行True,如果无法找到,就执行False,并且会通过while循环重新执行;
⑤第五步,我想要删除字典里的内容,所以我必须通过字典的关键字来删除属性值。所以,我先用for循环进入 a 列表,把每一个字典提取出来,再通过一个for循环把每一个字典关键字给依次提取出来,如果输入的关键字在字典中能找到,就执行 remove 功能,删除字典内容;
⑥第六步,因为while循环是个死循环,所以我设置了一个sys库来随时终止while循环,这个功能我在第五天的打卡中有用到,那也是我第一次接触这个库,学会了就要用!
while True:
# 提取字典
input_1 = input("请输入关键字:")
check = False # 哨兵变量
for dict_1 in a:
# 提取关键字
for key in dict_1.keys():
if input_1 == key:
check = True
a.remove(dict_1)
print(f"删除后:{a}")
break
import sys
# 结束循环
if input_1 == "exit":
sys.exit(0)
if check:
print("已删除")
else:
print("输入错误!请输入关键字!")
注:我把全部代码放在下面了,哨兵变量建议大家都了解一下,用起来很方便 ,我也是第一次接触,理解的还不是很透彻,建议大家去查找一下。
# 第一种方法
# 1. 列表里面嵌套字典,对字典中数据的删除
a = [{"ID": "1007"}, {"name": "张艺兴"}, {"age": "31"}]
print(f"删除前:{a}")
while True:
# 提取字典
input_1 = input("请输入关键字:")
check = False # 哨兵变量
for dict_1 in a:
# 提取关键字
for key in dict_1.keys():
if input_1 == key:
check = True
a.remove(dict_1)
print(f"删除后:{a}")
break
import sys
# 结束循环
if input_1 == "exit":
sys.exit(0)
if check:
print("已删除")
else:
print("输入错误!请输入关键字!")
结果:
删除前:[{'ID': '1007'}, {'name': '张艺兴'}, {'age': '31'}]
请输入关键字:ID
删除后:[{'name': '张艺兴'}, {'age': '31'}]
已删除
请输入关键字:d
输入错误!请输入关键字!
请输入关键字:exit
进程已结束,退出代码0
注:案例的源代码放在下面了:
names = [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}]
while True:
# 删除
del_name = input("请输入要删除的名字:")
find_flag = False
for line in names:
if line['name'] == del_name:
find_flag = True
names.remove(line)
if find_flag:
print("已删除!")
else:
print("输入的用户名不存在")
print(names)
结果:
请输入要删除的名字:name
输入的用户名不存在
[{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}]
请输入要删除的名字:18
输入的用户名不存在
[{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}]
请输入要删除的名字:zhangsan
已删除!
[{'name': 'lisi', 'age': 20}]
请输入要删除的名字:
2. 列表里面嵌套字典,对字典中数据的修改和添加
注:修改和添加的功能和删除的一样,直接上代码;
# 第一种方法
a = [{"ID": 1007}, {"name": "张艺兴"}, {"age": 31}]
print(f"修改之前:{a}")
while True:
input_1 = input("请输入你想要修改的关键字:")
check = False
for dict_1 in a: # 把每一个字典在列表里取出来
for key in dict_1.keys():
if key == input_1:
check = True
new = input("请输入新内容:")
dict_1[key] = eval(new)
print(f"修改之后:{a}")
import sys
# 结束循环
if input_1 == "exit":
sys.exit(0)
if check:
print("已修改")
else:
print("输入错误!请重新输入!")
结果:
修改之前:[{'ID': 1007}, {'name': '张艺兴'}, {'age': 31}]
请输入你想要修改的关键字:ID
请输入新内容:1233
修改之后:[{'ID': 1233}, {'name': '张艺兴'}, {'age': 31}]
已修改
请输入你想要修改的关键字:exit
进程已结束,退出代码0
注:案例源代码如下:
# 第二种方法
names = [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}]
while True:
# 修改
old_name = input('请输入要修改的姓名:')
print(names)
flag = 0
for line in names:
if line['name'] == old_name:
new_name = input('请输入修改的姓名:')
new_age = input('请输入修改的年龄:')
line['name'] = new_name
line['age'] = int(new_age)
flag = True
break
if flag:
print("已修改!")
else:
print('输入的用户不存在!')
print(names)
结果:
请输入要修改的姓名:张大
[{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}]
输入的用户不存在!
[{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 20}]
请输入要修改的姓名:
本文含有隐藏内容,请 开通VIP 后查看