В упражнении 39 книги Learn Python The Hard Way строки с 37 по 39 выглядят так:
print "-"*10
for state, abbrev in states.items():
print "%s has the city %s" % (state, abbrev)
Я думал, что понял это. Я думал, что Python берет КЛЮЧ: ЗНАЧЕНИЕ из «состояний» и назначает КЛЮЧ «состоянию», а ЗНАЧЕНИЕ — «аббревиатуре».
Однако я обнаружил, что произошло что-то странное, когда я ввел следующий код:
print "-"*10
for test in states.items():
print "%s has the city %s" % (test)
Он производит тот же результат, что и исходный код. Но это работает только в том случае, если вы дважды поместите %s
в оператор печати.
Может кто-нибудь объяснить, что происходит с «тестом»? Что такое "тест"? Это кортеж? Кажется, он содержит как KEY
, так и VALUE
из states.items()
.
Я просмотрел некоторые другие вопросы по упражнению 39 здесь и не нашел такого же запроса.
Код указан ниже (для Python 2.7)
# create a mapping of state to abbreviation
states = {
'Oregan': 'OR',
'Florida': 'FL',
'California': 'CA',
'New York' : 'NY',
'Michigan' : 'MI'
}
print "-"*10
for state, abbrev in states.items():
print "%s has the city %s" % (state, abbrev)
print "-"*10
for test in states.items():
print "%s has the city %s" % (test)