Важны ли числа, используемые в качестве ключей?Имеет ли смысл читать их в словари наоборот?- тогда вы можете использовать оператор try except KeyError
.Это может быть предпочтительным для очень больших словарей (хотя это не будет иметь место здесь для команд в лиге).Это также может быть более объектно-ориентированный способ мышления: название команды является идентификатором объекта, в то время как (я предполагаю, что числа являются текущими позициями лиги?) Позиция лиги является свойством (и в этом случае изменяемым).Так, например (адаптируя ответ Aaron_ab)
teams = {'NFL': {"Arizona Cardinals":1, "Atlanta Falcons":2, "Baltimore Ravens":3},
'NBA': {'Washington Wizards':1, 'Charlotte Hornets':2, 'Atlanta Hawks':3},
'MLB': {'Los Angeles Dogers':1, 'Cincinnati Reds':2, 'Toronto Blue Jays':3}}
def standings(team):
for league, teams_dict in teams.items():
try:
teams_dict[team]
print(teams_dict[team], team)
print(league)
break
except KeyError:
continue
В качестве альтернативы, отбросьте числа и получите словарь списков (где порядок списка является текущим порядком лиги):
import numpy as np
teams = {'NFL': ["Arizona Cardinals", "Atlanta Falcons", "Baltimore Ravens"],
'NBA': ['Washington Wizards', 'Charlotte Hornets', 'Atlanta Hawks'],
'MLB': ['Los Angeles Dogers', 'Cincinnati Reds', 'Toronto Blue Jays']}
def standings(team):
for league, teams_list in teams.items():
if team in teams_list:
print(team, np.where(np.array(teams_list)==team)[0])
print(league)