Как напечатать правильное значение для выбранного значения ключа в словаре? (Python)

1

Я делаю словарь с разными днями рождения людей (которые пользователь заполняет с помощью ввода). Теперь я также хочу, чтобы пользователь мог писать в одном из имен, которые он только что добавил, а затем вернуть ему этот день рождения. Проблема в том, что он всегда возвращает последнюю дату, добавленную в список, независимо от того, какое имя пользователь написал. Говорят, пользователь добавил эти элементы в: {anna: 1.october, paul: 3.january}. Если я тогда хочу, чтобы программа печатала день рождения Анны, она вместо этого печатает "день рождения анны в 3.january". Вот как выглядит мой код (Btw, он примерно переведен на английский язык, так что не против потенциальных языковых ошибок):

birthdays={}
name= ""
date= ""

while True:
    name= input("Who birthday would you like to add?:")
    if name.strip() == "done":
        break
    date= input("When is the person birthday?:")

find= input("\n Type in a name that you've added!:")
for name in birthdays:
    if find == name in birthdays or date in birthdays:
        print(" %s  birthday is at %s" % (name, date))

Я чувствую, что может быть что-то не так в последних 4 строках. Вся помощь ценится! :)

Теги:
dictionary
input
key-value

2 ответа

3
Лучший ответ

Во-первых, в добавленном коде я не вижу той части, которую вы добавляете в словарь. После этого вы можете выполнить поиск по этому адресу:

if find in birthdays:
    date = birthdays.get(find)
    print(" %s  birthday is at %s" % (find, date))
  • 0
    О, кажется, что строка моего кода потерялась! в середине должна быть строка с надписью "birthdays.update ({name: date}). В любом случае, спасибо! это сработало :)
1

Это вы хотите? Но я думаю, что это не полный

birthdays={}
name= ""
date= ""

while True:
    name = input("Who birthday would you like to add?:")
    if name.strip() == "done":
        break
    date = input("When is the person birthday?:")
    birthdays[name] = date

find = input("\n Type in a name that you've added!:")
if find in birthdays:
    print(" {}  birthday is at {}" .format(find, birthdays.get(find)))
  • 0
    Спасибо! Я переключил свои последние строки с вашими последними, и это сработало так же, как и ответ выше :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню