看到了类似问题的一些答案,但没有内置函数/多条目词典。假设我有一个字典,其中包含不同 map 投影的 basemap 参数;
Domains = {'TPCentral':["projection='geos',lon_0=-160,lat_0=0,resolution='l'"],
'World':["projection='robin',lon_0=0"]}
我想调用 basemap 函数(来自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}
关于python - 将字典元素作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765091/