Python 如何从函数中返回dict?

Python 如何从函数中返回dict?,python,Python,我试图制作一个应该有多个键和值的dict,但是当在函数中执行它时,它只返回第一个键,值 我想这是因为我在错误的地方使用了return,但我不确定如何使它正常工作 我有一个列表,我正试图将其转换为函数中的dict In [876]: cable_map Out[876]: ['SYD_A_1234 <> Outlet1', 'SYD_B_4567 <> Outlet2', 'MELB_A_1111 <> Outlet1'] [876]中的:电缆地图 Out[8

我试图制作一个应该有多个键和值的dict,但是当在函数中执行它时,它只返回第一个键,值

我想这是因为我在错误的地方使用了
return
,但我不确定如何使它正常工作

我有一个列表,我正试图将其转换为函数中的dict

In [876]: cable_map
Out[876]: ['SYD_A_1234 <> Outlet1', 'SYD_B_4567 <> Outlet2', 'MELB_A_1111 <> Outlet1']
[876]中的
:电缆地图
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'}
[880]中的
:def make_map():
…:mymap={}
…:对于电缆地图中的线路:
…:如果重新搜索(“SYD”,行拆分(“”,1)[0]):
…:mymap.update({line.split('',1)[0]:line.split('',1)[1]})
…:返回mymap
...:
…:返回{}
...:
在[882]中:cable\u map=make\u map()
在[883]中:电缆图
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'}
[891]中的
:mymap={}
…:对于电缆地图中的线路:
…:如果重新搜索(“SYD”,行拆分(“”,1)[0]):
…:mymap.update({line.split('',1)[0]:line.split('',1)[1]})
...:
...:
在[892]中:mymap
Out[892]:{'SYD_A_1234':'Outlet1','SYD_B_4567':'Outlet2'}

谢谢

这是因为
return
语句会导致函数在循环的第一次迭代时退出,而在函数外部,循环会贯穿
cable\u map

my\u cable\u map=['SYD\u A\u 1234 Outlet1','SYD\u B\u 4567 Outlet2','MELB\u A\u 1111 Outlet1']
my_cable_map = ['SYD_A_1234 <> Outlet1', 'SYD_B_4567 <> Outlet2', 'MELB_A_1111 <> Outlet1']    
def make_map(cable_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

print(make_map(my_cable_map))
def make_映射(电缆映射): mymap={} 对于电缆布线图中的线路: 如果重新搜索(“SYD”,行分割(“”,1)[0]): mymap.update({line.split('',1)[0]:line.split('',1)[1]}) 返回我的地图 打印(制作地图(我的电缆地图))
现在工作的代码:

In [919]: 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
     ...:

In [920]: cable_map = make_map()

In [921]: cable_map
Out[921]: {'SYD_A_1234': 'Outlet1', 'SYD_B_4567': 'Outlet2'}
[919]中的
:def make_map():
…:mymap={}
…:对于电缆地图中的线路:
…:如果重新搜索(“SYD”,行拆分(“”,1)[0]):
…:mymap.update({line.split('',1)[0]:line.split('',1)[1]})
…:返回mymap
...:
在[920]中:cable\u map=make\u map()
在[921]中:电缆图
Out[921]:{'SYD_A_1234':'Outlet1','SYD_B_4567':'Outlet2'}

在第一次迭代结束时,您很快就返回了
mymap
。循环完成后返回。您可以从if返回
mymap
。应该在外面啊哈。。。愚蠢的错误。谢谢。。。这就是我的结局。在这里放置
cable\u map
的目的是什么
def make\u map(cable\u map):
。我无法使它与该代码一起工作。cable_map是您的变量当您调用此函数时,您可以传递您的变量