weixin_44229391 2022-04-11 22:39 采纳率: 60%
浏览 79
已结题

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
不在
不在

  • 写回答

1条回答 默认 最新

  • Love And Program 新星创作者: 人工智能技术领域 2022-04-11 23:45
    关注
    
    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)
    

    欢迎关注采纳哟😁

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 4月11日