Python打卡第七天,跟着CSDN练习语法

发布于:2022-10-14 ⋅ 阅读:(322) ⋅ 点赞:(0)
# 对列表里面 嵌套的字典 的增删改查

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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到