новичок в программировании и работе с Zed Shaw's Learn Python3 The Hard way.
Я хотел создать диктант, который отображает ключ на несколько городов, но быстро обнаружил, что каждый ключ должен быть уникальным и повторное использование того же ключа просто перезаписывает предыдущее значение.
Вот мой исходный код:
states = {
'Pennsylvania': 'PA',
'Maryland': 'MD',
'Texas': 'TX'}
cities = {
'PA': 'State College',
'PA': 'Spring Mills',
'PA': 'Pittsburgh',
'PA': 'Philadelphia',
'PA': 'Eerie',
'MD': 'Frederick',
'MD': 'Salisbury',
'MD': 'Swanton',
'MD': 'Baltimore',
'TX': 'Midland',
'TX': 'Dallas',
'TX': 'Houston',
'TX': 'Galveston'
}
for state, abbrev in states.items():
x = "%s is abbreviated: %s" % (state, abbrev)
print(x)
for abbrev, city in cities.items():
x = "%s has the city %s in it" % (abbrev, city)
print(x)
Следующее, что я обнаружил, это то, что вы можете использовать список в качестве значения в dict. Поэтому я попробовал это вместо этого и сделал вложенный l oop для вызова каждого города индивидуально:
states = {
'Pennsylvania': 'PA',
'Maryland': 'MD',
'Texas': 'TX'}
cities = {
'PA': ['State College',
'Spring Mills',
'Pittsburgh',
'Philadelphia',
'Eerie'],
'MD': ['Frederick',
'Salisbury',
'Swanton',
'Baltimore'],
'TX': ['Midland',
'Dallas',
'Houston',
'Galveston']
}
for state, abbrev in states.items():
x = "%s is abbreviated: %s" % (state, abbrev)
print(x)
for abbrev, city in cities.items():
count = 0
for i in cities.get(abbrev):
city_list = cities.get(abbrev)
x = "%s has the city %s in it" % (abbrev, city_list[count])
print(x)
count += 1
Мой вопрос в том, есть ли лучший (более упрощенный?) Метод сопоставления нескольких городов с одним состояние и получить это значение позже, или если список внутри dict - лучший метод здесь. Возможно, я еще не нашел лучшего метода в книге, но готов ответить на все вопросы. Спасибо, что нашли время, чтобы прочитать сообщение. Надеюсь, это было не слишком долго.