Предполагая, что данные находятся в d_MONT:
d_MONT = {'name': 'Montgomery St.', 'abbr': 'MONT', 'etd': [{'destination': 'Antioch', 'abbreviation': 'ANTC', 'limited': '0', 'estimate': [{'minutes': '1', 'platform': '2', 'direction': 'North', 'length': '10', 'color': 'YELLOW', 'hexcolor': '#ffff33', 'bikeflag': '1', 'delay': '254'}]},
{'destination': 'Daly City', 'abbreviation': 'DALY', 'limited': '0', 'estimate': [{'minutes': '39', 'platform': '1', 'direction': 'South', 'length': '0', 'color': 'BLUE', 'hexcolor': '#0099cc', 'bikeflag': '1', 'delay': '0'}]},
{'destination': 'SF Airport', 'abbreviation': 'SFIA', 'limited': '0', 'estimate': [{'minutes': '38', 'platform': '1', 'direction': 'South', 'length': '10', 'color': 'YELLOW', 'hexcolor': '#ffff33', 'bikeflag': '1', 'delay': '0'}]}]}
Это найдет следующий поезд до пункта назначения. Обязательно:
destinationList = d_MONT['etd']
destinationRequired = 'Daly City'
for destinationDict in destinationList:
if destinationDict['destination'] == destinationRequired:
earliest = None
for estimate in destinationDict['estimate']:
if earliest is None or estimate['minutes'] < eariest:
earliest = estimate['minutes']
print("Next train to {0}: {1} minutes".format(destinationRequired, earliest))
break
else:
print("No trains to {0}".format(destinationRequired))
Обратите внимание, что есть еще Pythoni c способов сделать это, и приведенный выше пример кода не соответствует PEP8, но я думаю, что важно, чтобы вы понимали основы c logi c того, как делать то, что вы хотите, а не сложный Python однострочный.
Вы не документируете объектный формат JSON, поэтому я не думаю, что можно с уверенностью предположить, что список поездов до пункта назначения будет в порядке, поэтому самый безопасный - это пройти по каждому из них и найти самый ранний. Даже не ясно, будет ли в списке возвращено больше одного поезда, и в этом случае достаточно простого [0], а не проходить через каждый.