将字典传递给python中的函数作为关键字参数
我想使用字典在Python中调用一个函数。
这里是一些代码:
d = dict(param='test') def f(param): print param f(d)
这打印{'param': 'test'}
但我想它只是打印test
。
我希望它能以类似的方式工作更多的参数:
d = dict(p1=1, p2=2) def f2(p1,p2): print p1, p2 f2(d)
这可能吗?
最后为自己弄明白了。 这很简单,我只是错过了**运算符来解压字典
所以我的例子变成:
d = dict(p1=1, p2=2) def f2(p1,p2): print p1, p2 f2(**d)
在Python中,这被称为“解包”,你可以在教程中find一些关于它的内容。 它的文件很烂,我同意,特别是因为它是多么的有用。
一些额外的细节,可能有助于知道(我读过这个问题后,去了testing):
- 该函数可以具有不包含在字典中的参数
- 您不能覆盖已经在字典中的参数
- 字典不能有不在函数中的参数。
每个例子:
In[3]: def test(a=4, b=2): ...: print a, b ...:
编号1:该函数可以具有不包含在字典中的参数
In[6]: mydict = {'a': 100} In[7]: test(**mydict) 100 2
编号2:您不能覆盖已经在字典中的参数
In[8]: mydict = {'a': 100, 'b': 200} In[9]: test(a=3, **mydict) TypeError: test() got multiple values for keyword argument 'a'
编号3:字典不能有不在函数中的参数。
In[10]: mydict = {'a': 100, 'b': 200, 'c': 300} In[11]: test(**mydict) TypeError: test() got an unexpected keyword argument 'c'
这里你去 – 工作只是任何其他迭代:
d = {'param' : 'test'} def f(dictionary): for key in dictionary: print key f(d)