将字典传递给python中的函数作为关键字参数
我想在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)
这里亚去 - 工作只是任何其他迭代:
d = {'param' : 'test'}
def f(dictionary):
for key in dictionary:
print key
f(d)
似乎人们在回答原来的问题,而不是回答的问题时,正在对此进行压制。我建议现在删除这个帖子。 – dotancohen 2013-12-10 08:00:03
@dotancohen不,它从来都不是正确的,它没有通过问题的第二块代码。它从字面上看,印刷是一个例子。 – 2014-02-26 21:28:08
它确实回答了这个问题,但它不是通过字典解包来完成的。根据发布的问题,他的方法完全有效。 – Natecat 2016-11-30 01:19:20
一些额外的细节,可能有助于了解(问题我看完这个去和测试):
- 函数可以有不包含在字典中的参数
- 您可以而不是覆盖已存在于字典中的参数
- 字典可以而不是具有不在该函数中的参数。每个
实例:
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'
如果你想要这个帮助别人,你应该重新说明你的问题:问题不是传递字典,你想要的是将字典转换为关键字参数 – Javier 2008-12-02 17:28:17