我试图制作一个应该有多个键和值的dict,但是当在函数中执行它时,它只返回第一个键,值
我认为这是因为我在错误的地方使用了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'}
谢谢
这是因为
return
语句导致函数在循环的第一次迭代时退出,而在函数外部,循环运行在cable_map
中的所有line
现在的工作代码:
相关问题 更多 >
编程相关推荐