将字典传递给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):

  1. 该函数可以具有包含在字典中的参数
  2. 不能覆盖已经在字典中的参数
  3. 字典不能有不在函数中的参数。

每个例子:

 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)