将字典元素作为参数传递给函数

时间:2017-05-03 16:06:47

标签: python string function dictionary arguments

看到类似问题的几个答案,但没有内置函数/多条目词典。假设我有一个包含不同地图投影的底图参数的字典;

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')

问题是它将它作为一个长字符串传递,不知道如何将其分解为单独的参数(尝试使用*)。提前谢谢!

1 个答案:

答案 0 :(得分:1)

["projection='geos',lon_0=-160,lat_0=0,resolution='l'"]

是包含单个字符串的列表。在它上面使用解包会产生一个字符列表 - 这几乎肯定会比你的参数数量大很多,而且肯定不是你要发送的参数。您最好使用字典来保留此值:

'TPCentral': {
    'projection': 'geos',
    'lon_0': -160,
    'lat_0': 0,
    'resolution': 'l'}

然后使用关键字参数unpacking解压缩:

m = Basemap(**Domains['TPCentral'])

如果你被这种格式强迫,你可以做一些字符串处理,比如

pairs = [x.split('=') for x in Domains['TPCentral'][0].split(',')]
Domains['TPCentral'] = {k: eval(v) for k, v in pairs}