Python - словари, отображающие значения через ключи - PullRequest
0 голосов
/ 27 апреля 2018

Для следующей программы:

spanishdays = { 'Sunday':'Domingo', 'Monday':'Lunes', \
                'Tuesday':'Martes', 'Wednesday':'Miercoles', \
                'Thursday':'Jueves', 'Friday':'Viernes', \
                'Saturday':'Sabado' }

ui = input("Enter 'Sunday', 'Monday', 'Tuesday', 'Wednesday'," \
            "'Thursday', 'Friday', 'Saturday': ")

for ui in spanishdays:
    print('The word for ' + ui + ' in Spanish is ' + spanishdays[ui])

Я думал, что вывод будет следующим: если пользователь введет понедельник, то "Слово для понедельника по-испански - Lunes."

Однако, когда я запускаю программу, я получаю следующий вывод:

Enter 'Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday',
'Saturday': Monday
The word for Sunday in Spanish is Domingo
The word for Monday in Spanish is Lunes
The word for Tuesday in Spanish is Martes
The word for Wednesday in Spanish is Miercoles
The word for Thursday in Spanish is Jueves
The word for Friday in Spanish is Viernes
The word for Saturday in Spanish is Sabado

Как мне получить просто:

The word for Monday in Spanish is Lunes

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Нет необходимости в цикле for, потому что вы просто хотите получить одно значение для dict

Python 3.6.5 (default, Mar 30 2018, 06:42:10)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: spanishdays = { 'Sunday':'Domingo', 'Monday':'Lunes', \
   ...:                 'Tuesday':'Martes', 'Wednesday':'Miercoles', \
   ...:                 'Thursday':'Jueves', 'Friday':'Viernes', \
   ...:                 'Saturday':'Sabado' }

In [2]: ui = input("Enter 'Sunday', 'Monday', 'Tuesday', 'Wednesday',""'Thursday', 'Friday', 'Saturday': ")
Enter 'Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday', 'Saturday': Monday

In [3]: print('The word for %s in Spanish is %s '% (ui, spanishdays.get(ui, 'Invalid entry')))
The word for Monday in Spanish is Lunes

In [4]:
0 голосов
/ 27 апреля 2018

Вам не нужен цикл для вывода значения, соответствующего ключу в словаре.

Просто использование spanishdays[ui] вернет значение, соответствующее ключу ui из словаря spanishdays. В качестве альтернативы вы можете использовать spanishdays.get(ui), который служит той же цели, но никогда не поднимает KeyError.

spanishdays = { 'Sunday':'Domingo', 'Monday':'Lunes', \
                'Tuesday':'Martes', 'Wednesday':'Miercoles', \
                'Thursday':'Jueves', 'Friday':'Viernes', \
                'Saturday':'Sabado' }

ui = input("Enter 'Sunday', 'Monday', 'Tuesday', 'Wednesday'," \
            "'Thursday', 'Friday', 'Saturday': ")

print('The word for ' + ui + ' in Spanish is ' + spanishdays[ui])

# Enter 'Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday', 'Saturday': Monday                               
# The word for Monday in Spanish is Lunes                    
...