#python #recursion
#python #рекурсия
Вопрос:
у меня проблема с упражнением. Это рекурсивная функция .В параметрах у меня есть dict, начальный город и список подсказок. Я должен вернуть список с секретами (последний элемент в списке списков). начните с начального города, затем следуйте списку подсказок, затем следуйте повторению второго города.
Dict:
{('ROMA', 'la'): [['PARIGI', 'vendita'], ['CAIRO', 'furto'], ['MOSCA', 'mata']], ('PARIGI', 'bocca'): [['BERLINO', 'diamanti'], ['CANCUN', 'cannoni']], ('CAIRO', 'bocca'): [['MILANO', 'di']], ('MOSCA', 'bocca'): [['PECHINO', 'hari']], ('BERLINO', 'sollevò'): [['PECHINO', 'rubati']], ('CANCUN', 'sollevò'): [['ROMA', 'mercato']], ('MILANO', 'sollevò'): [['PARIGI', 'diamanti']], ('PECHINO', 'sollevò'): [['MILANO', 'ha']], ('PECHINO', 'dal'): [['ROMA', 'stanotte']], ('ROMA', 'dal'): [['MOSCA', 'nero']], ('PARIGI', 'dal'): [['CAIRO', 'a']], ('MILANO', 'dal'): [['PARIGI', 'sedotto']], ('ROMA', 'fiero'): [['PARIGI', 'ad']], ('MOSCA', 'fiero'): [['BERLINO', 'del']], ('CAIRO', 'fiero'): [['CANCUN', 'buckingham']], ('PARIGI', 'fiero'): [['PECHINO', 'ambasciatore']], ('PARIGI', 'pasto'): [['CANCUN', 'anversa']], ('BERLINO', 'pasto'): [['CANCUN', 'cairo']], ('CANCUN', 'pasto'): [['MILANO', 'palace']], ('PECHINO', 'pasto'): [['MILANO', 'zambia']]}
Подсказки:
['la', 'bocca', 'sollevò', 'dal', 'fiero', 'pasto']
Initial_city:
'ROMA'
Мой код:
secret = []
def getSecret(city_dict, initial_city, clues):
if (len(clues) == 0):
return secret
for clue in clues:
if (initial_city, clue) in city_dict:
secret.append(city_dict[(initial_city, clue)][0][1])
return getSecret(city_dict, city_dict[(initial_city, clues[0])][0][0], clues[1:])
Мой неправильный вывод:
['vendita', 'diamanti', 'rubati', 'stanotte', 'ad', 'anversa']
Это должно быть:
[['vendita', 'diamanti', 'rubati', 'stanotte', 'ad', 'anversa'],['vendita','cannoni','mercato','nero','del','cairo'],['furto','di', 'diamanti','a', 'buckingham','palace'],['mata','hari','ha','sedotto','ambasciatore','zambia']]
Какой-нибудь совет?
Комментарии:
1. Что такое
city_dict
? Это ваш список списков (а не dict)?2. да, это список списков
3. В любом случае, исходя из того факта, что ожидаемый результат должен быть списком списков, а вы добавляете только один элемент, это должно сказать вам, что с вашим подходом что-то не так
4. У вас есть
return
оператор внутри цикла for , поэтому цикл будет повторяться только один раз. Это намеренно?5. извините, это словарь, а не список списков