Python: проверка наличия входного значения в di c и печать значения из dict с использованием входного значения - PullRequest
0 голосов
/ 18 июня 2020

Итак, я хочу проверить, существует ли мое значение input(xd) в моем dict(main_data), и я хочу распечатать значение из моего dict(main_data), используя значение из input(xd)

main_data = []
xdz = False

while True:
    name = input("enter the name: ")
    data1 = [int(i) for i in input("Phone number: ").split(" ")]
    data2 = [int(i) for i in input("Address: ").split(" ")]
    data3 = [int(i) for i in input("Job: ").split(" ")]
    data4 = [int(i) for i in input("Age: ").split(" ")]

    main_data.append({
        "name": name,
        "number": data1,
        "address": data2,
        "job": data3,
        "age": data4,
    })
    try = input("Input another data?:(Y/N)")
    if try == "N":
        break
    elif ulang == "n":
        break

xd = str(input("Enter the name you want to check: "))
xz = xd

if xz in main_data:
    print(main_data["name"][xz])

это не дает мне вывода, его остановка на «Введите имя, которое вы хотите проверить:»

Желаемый результат:

Enter the name you want to check: john doe
[{'name': 'john doe', 'number': [123], 'address': [432], 'job': [321], 'age': [31]}]

Я использовал неправильный оператор печати и оператор if?

Ответы [ 3 ]

0 голосов
/ 18 июня 2020
  • Не используйте try в качестве имени переменной, так как это ключевое слово в Python.

Вы можете попробовать:

main_data = []
xdz = False

while True:
    name = input("enter the name: ")
    data1 = [int(i) for i in input("Phone number: ").split(" ")]
    data2 = [int(i) for i in input("Address: ").split(" ")]
    data3 = [int(i) for i in input("Job: ").split(" ")]
    data4 = [int(i) for i in input("Age: ").split(" ")]

    main_data.append({
        "name": name,
        "number": data1,
        "address": data2,
        "job": data3,
        "age": data4,
    })
    input_data = input("Input another data? (Y/N)")
    if input_data == "N" or input_data == "n":
        break

xd = str(input("Enter the name you want to check: "))

for index_number, data in enumerate(main_data):
    if data["name"] == xd:
        print(main_data[index_number])
0 голосов
/ 18 июня 2020

Я не понял, почему вы использовали try в нем

Вы можете использовать lower() с вводом, чтобы уменьшить алфавит

Наконец, используйте фильтр, чтобы быстро найти материал списка.

main_data = []
xdz = False

while True:
    name = input("enter the name: ")
    data1 = [int(i) for i in input("Phone number: ").split(" ")]
    data2 = [int(i) for i in input("Address: ").split(" ")]
    data3 = [int(i) for i in input("Job: ").split(" ")]
    data4 = [int(i) for i in input("Age: ").split(" ")]

    main_data.append({
        "name": name,
        "number": data1,
        "address": data2,
        "job": data3,
        "age": data4,
    })

    ulang = input("Input another data?:(Y/N)").lower()
    if ulang == "n":
        break


xd = (input("Enter the name you want to check: ")
xz = list(filter(lambda xx: xd == xx['name'], main_data))

print(xz)
0 голосов
/ 18 июня 2020
  • Не используйте try это зарезервированное ключевое слово для обработки исключений

  • не используйте понимание списка (а не ваше, которое преобразует каждое слово to inn [int(i) for i in input().split(" ")

  • Ваша структура представляет собой список людей, поэтому вы не можете получить доступ к одному или проверить наличие одного по ключу, вам нужно перебрать человека

main_data = []

while True:
    name = input("enter the name: ")
    data1 = int(input("Phone number: "))
    data2 = input("Address: ")
    data3 = input("Job: ")
    data4 = int(input("Age: "))

    main_data.append({"name": name, "number": data1, "address": data2, "job": data3, "age": data4, })

    again = input("Input another data?:(Y/N)")
    if again.upper() == "N":
        break

name_to_look = str(input("Enter the name you want to check: "))
for person in main_data:
    if person['name'] == name_to_look:
        print(person)

Если вы хотите найти человека по имени, используйте dict

main_data = {}

while True:
    # ...
    main_data[name] = {"name": name, "number": data1, "address": data2, "job": data3, "age": data4, }
    # ...

name_to_look = str(input("Enter the name you want to check: "))
if name_to_look == main_data:
    print(main_data[name_to_look])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...