Я пытаюсь создать диктант, который должен иметь несколько ключей и значений, однако при выполнении этого внутри функции он возвращает только первый ключ, значение.
Я думаю, это потому, что я использую return
в неправильном месте, но я не уверен, как заставить его работать правильно.
У меня есть этот список, который я пытаюсь преобразовать в dict внутри функции
In [876]: cable_map
Out[876]: ['SYD_A_1234 <> Outlet1', 'SYD_B_4567 <> Outlet2', 'MELB_A_1111 <> Outlet1']
вот функция
In [880]: def make_map():
...: mymap = {}
...: for line in cable_map:
...: if re.search("SYD", line.split(' <> ',1)[0]):
...: mymap.update({line.split(' <> ',1)[0]:line.split(' <> ',1)[1]})
...: return mymap
...:
...: return {}
...:
In [882]: cable_map = make_map()
In [883]: cable_map
Out[883]: {'SYD_A_1234': 'Outlet1'}
Как видите, она помещает только первый ключ value в dict. Если я запускаю этот же код вне функции, он работает должным образом:
In [891]: mymap = {}
...: for line in cable_map:
...: if re.search("SYD", line.split(' <> ',1)[0]):
...: mymap.update({line.split(' <> ',1)[0]:line.split(' <> ',1)[1]})
...:
...:
In [892]: mymap
Out[892]: {'SYD_A_1234': 'Outlet1', 'SYD_B_4567': 'Outlet2'}
Спасибо!