将字典元素作为参数传递给函数
问题描述:
查看类似问题的一些答案,但未在函数/多条目词典中构建。假设我有一个包含不同地图投影的底图参数的字典;将字典元素作为参数传递给函数
Domains = {'TPCentral':["projection='geos',lon_0=-160,lat_0=0,resolution='l'"],
'World':["projection='robin',lon_0=0"]}
我想调用底图函数(从maplotlib),使得
m = Basemap(Domains['TPCentral'])
所以,这将等效地充当;
m = Basemap(projection='geos',lon_0=-160,lat_0=0,resolution='l')
问题是这个将它作为一个长字符串传递,不知道如何将它分解为单独的参数(尝试使用*)。提前致谢!
答
["projection='geos',lon_0=-160,lat_0=0,resolution='l'"]
是包含单个字符串的列表。使用它的解包会得到一个字符列表 - 这几乎肯定会比你的参数数量大得多,当然不是你想发送的参数。你最好使用字典保持这个值:
'TPCentral': {
'projection': 'geos',
'lon_0': -160,
'lat_0': 0,
'resolution': 'l'}
,然后解压用关键字参数拆包:
m = Basemap(**Domains['TPCentral'])
如果你被这种形式所迫,你可以做一个小的字符串处理,就像
pairs = [x.split('=') for x in Domains['TPCentral'][0].split(',')]
Domains['TPCentral'] = {k: eval(v) for k, v in pairs}
+0
这就是我正在寻找的,谢谢。我没有意识到字典可以包含子列表/字典,即dict = {'x':{'y':{'z':'a = 1'}}} –
+0
刚刚做过 - 不得不等待几分钟。 –
看看[这个问题](https://*.com/questions/186857/splitting-a-semicolon-separated-str荷兰国际集团到一个词典功能于蟒)。 – tyteen4a03
虽然我不想构建字典。 –
这是怎么回事:[question](http://*.com/questions/36901/what-does-double-star-and-star-do-for-parameters) – RoaaGharra