将Python字典转换为kwargs?

463
我想为晒伤(solr接口)构建一个查询,使用类继承,从而将键值对添加在一起。晒伤接口接受关键字参数。我如何将字典({'type':'Event'})转换为关键字参数(type='Event')?
另请参阅:函数调用中的双星号(**)和星号(*)有什么意义? - 适用于遇到该语法并感到困惑的人们的相关问题。

请参阅:Python 字典解包 PEP448 - undefined
3个回答

825

115
如果您已经有一个名为"myDict"的字典对象,您可以直接使用func(**myDict)进行调用。例如:myDict = {"type": "event"} - James Khoury
3
这在Python标准文档中已经有比较全面的介绍了。同时还可以参考:https://dev59.com/S3M_5IYBdhLWcg3w-4rw。 - dreftymac
1
这非常有帮助,特别是在将字典转换为Swagger模型实例时。谢谢。 - timmins

49

**运算符在这里非常有用。

**运算符将展开字典元素,因此**{'type':'Event'}将被视为type='Event'

func(**{'type':'Event'})func(type='Event')相同,即字典元素将转换为关键字参数

FYI

*将展开列表元素,并将它们视为位置参数

func(*['one', 'two'])func('one', 'two')相同。


17

这里是一个完整的示例,演示如何使用**操作符将字典中的值作为关键字参数传递。

>>> def f(x=2):
...     print(x)
... 
>>> new_x = {'x': 4}
>>> f()        #    default value x=2
2
>>> f(x=3)     #   explicit value x=3
3
>>> f(**new_x) # dictionary value x=4 
4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接