Как мне распечатать полный список, в котором пользователь ввел имя из этого списка? PYTHON

#python #list

#python #Список

Вопрос:

Я смог найти много информации о выборе значения из списка, но я хочу выбрать список из значения, содержащегося в нем. Проблема в том, что я не хочу, чтобы это было так многословно, как выполнение множества «если«, поскольку это излишне.

Есть ли способ использовать значение для печати всего списка? Это поможет мне в последующих уроках по вычислению. Я уже должен был знать это по предыдущим годам, хотя из-за характера моего курса мои коллеги могут этого не знать.

Это соответствующий код:

 Doggo_Database = [['Lilly', 'Jack Russell', 'White', 'F', 2009, 'Medium'],
                  ['Winston', 'Pug', 'Brown', 'M', 2010, 'Small'],
                  ['Bo', 'Doberman', 'Brown', 'M', 2011, 'Large'],
                  ['Shep', 'Border Collie', 'Black', 'M', 2006, 'Large'],
                  ['Rodney', 'Jack Russell', 'Grey', 'F', 2010, 'Medium'],
                  ['Butch', 'Bulldog', 'White', 'F', 2011, 'Medium'],
                  ['Sally', 'Boston Terrier', 'Brown', 'F', 2013, 'Small']]
names = [Doggo_Database[0][0], Doggo_Database[1][0], Doggo_Database[2][0], Doggo_Database[3][0], Doggo_Database[4][0], Doggo_Database[5][0], Doggo_Database[6][0]]
name_select = input('Do you know the name of the Doggo? If yes, state the name. If no, state NO in capital letters. ')
while name_select != 'NO' and name_select not in names:
    print('This is not a valid entry.')
    name_select = input('Please try again: ')
    
if name_select != 'NO':
    for name in names:
        if name_select == name:
            print(name_select)
            Data_name = 
elif name_select == 'NO':
    print("We're currenly unable to find the doggo until more search options are availble")
else:
    print('a logic error has occurred')
  

Для этого я использую базовый python, а не SQL

Комментарии:

1. Data_name = сделает так, что ваш фрагмент кода не будет работать

Ответ №1:

Я предполагаю, что вы ищете Data_name = соответствующий список, учитывая способ написания вашего кода, вы можете сделать это:

 Data_name = [i for i in Doggo_Database if i[0]==name_select][0]
  

Например, если name_select = 'Bo'

результатом будет

 ['Bo', 'Doberman', 'Brown', 'M', 2011, 'Large']
  

Ответ №2:

Если вы можете использовать python dict (как dogs DB), это сделает ваш код намного чище.

 db = {'Lilly': ['Jack Russell', 'White', 'F', 2009, 'Medium'],
      'Winston': ['Pug', 'Brown', 'M', 2010, 'Small']}

name_select = input('Do you know the name of the Doggo? If yes, state the name. If no, state NO in capital letters. ')
while name_select != 'NO' and name_select not in db:
    print('This is not a valid entry.')
    name_select = input('Please try again: ')

if name_select != 'NO':
    print(f'Dog details: {db.get(name_select)}')
else:
    print("We're currenly unable to find the doggo until more search options are availble")