python 想根据输入的姓名去列表里的字典做判断查询并打印,列表里有多个字典,每次查不到结果,判断也会把查询不到的结果打印出来,当查不到值的时候,会打印多次,请问有什么方式可以解决吗?

想根据输入的姓名去列表里的字典做判断查询并打印,列表里有多个字典,每次查不到结果,判断也会把查询不到的结果打印出来,当查不到值的时候,会打印多次,请问有什么方式可以解决吗?

代码:
list1 = [{"name":"小王","age":19},{"name":"小明","age":18}]

def a():
name1 = input("请输入查询的姓名:")
for i in list1:
if name1 in i.values() :
print(list1[list1.index(i)])
else:
print("不在")
a()

运行结果:
1.请输入查询的姓名:小明
不在
{'name': '小明', 'age': 18}

2.请输入查询的姓名:xiao
不在
不在


list1 = [{"name":"小王","age":19},{"name":"小明","age":18}]

def a():
    name1 = input("请输入查询的姓名:\n")
    print(1)
    for i in list1:
            if name1 in i.values() :
                print(list1[list1.index(i)])
                print("在")
                break
            else:
                print("不在")
a()

因为你用的for循环啊,每个值都要遍历一遍,加个结束条件
推荐你用一个flag去判断

list1 = [{"name":"小王","age":19},{"name":"小明","age":18}]
flag = 0
def a(flag):
    name1 = input("请输入查询的姓名:\n")
    for i in list1:
        if name1 in i.values() :
            flag = 1
            break
        else:
            flag = 0
    if flag==1:
        print("在")
    else:
        print("buzai")
a(flag)

欢迎关注采纳哟😁