我的搜索输入功能有效,但仅显示字典列表中最后一个人的信息

问题描述 投票:0回答:1

我是python的新手,我需要一些帮助。我正在制作员工列表菜单。我的词典列表是:

person_infos = [ {'name': 'John Doe', 'age': '46', 'job position': 'Chair Builder', 'pay per hour': '14.96','date hired': '2/26/19'},

  {'name': 'Phillip Waltertower', 'age': '19', 'job position': 'Sign Holder', 'pay per hour': '10','date hired': '5/9/19'},

  {'name': 'Karen Johnson', 'age': '40', 'job position': 'Manager', 'pay per hour': '100','date hired': '9/10/01'},

  {'name': 'Linda Bledsoe', 'age': '60', 'job position': 'CEO', 'pay per hour': '700', 'date hired': '8/24/99'},

  {'name': 'Beto Aretz', 'age': '22', 'job position': 'Social Media Manager', 'pay per hour': '49','date hired': '2/18/12'}]

和我的“搜索字典输入功能列表”是程序应如何根据用户输入的名称打印正确的词典:

def search_query(person_infos):
  if answer == '3':
    search_query = input('Who would you like to find: ')
    they_are_found = False
    location = None
    for i, each_employee in enumerate(person_infos):
      if each_employee['name'] == search_query:
        they_are_found = True
      location = i
    if they_are_found:
      print('Found: ', person_infos[location]['name'], person_infos[location]['job position'], person_infos[location]['date hired'], person_infos[location]['pay per hour'])
  else:
      print('Sorry, your search query is non-existent.')

而且我也有这个-

elif answer =='3':
  person_infos = search_query(person_infos)

这似乎是朝正确方向迈出的一步,但对于

search_query = input('Who would you like to find: ')

如果我在person_infos中输入名称,例如“ John Doe”,它将仅打印最后一个词典的信息(无论它是哪个特定的词典,顺序中的最后一个总是输出),而不是John Doe的信息。 。在这种情况下,它将仅打印“ Beto Aretz's”。有人可以帮忙吗?这是我一直在努力的事情,那会很棒。我已经进行了很多研究,无法找到一些我知道该怎么做的东西,或者是输入搜索的东西。

谢谢,LR

python dictionary search printing conditional-statements
1个回答
0
投票
乍看之下,因为location=i不在if语句中缩进,因此它在for循环的每次迭代中都被设置为最新的i。让我知道是否有帮助。

def search_query(person_infos): if answer == '3': search_query = input('Who would you like to find: ') they_are_found = False location = None for i, each_employee in enumerate(person_infos): if each_employee['name'] == search_query: they_are_found = True location = i if they_are_found: print('Found: ', person_infos[location]['name'], person_infos[location]['job position'], person_infos[location]['date hired'], person_infos[location]['pay per hour']) else: print('Sorry, your search query is non-existent.')

© www.soinside.com 2019 - 2024. All rights reserved.