将Python字典转换为kwargs?


323

我想使用类继承构建一个针对sunburnt(solr interface)的查询,因此将键-值对加在一起。sunburnt接口带有关键字参数。如何将字典({'type':'Event'})转换为关键字参数(type='Event')

Answers:


562

使用双星运算符(又名double-splat?):

func(**{'type':'Event'})

相当于

func(type='Event')

82
如果您已经有了一个名为“ myDict”的字典对象,则只需func(**myDict) .iemyDict = {"type": "event"}
James Khoury

3
python标准文档中对此进行了很好的介绍。另请参阅:stackoverflow.com/questions/1137161。(dmid:// juice_cobra_hush)
dreftymac '16

1
这非常有用,特别是在将字典转换为Swagger模型实例时。谢谢。
timmins,

13

** 操作员在这里会有所帮助。

**操作员将解开dict元素的包装,因此**{'type':'Event'}将被视为type='Event'

func(**{'type':'Event'}) 与...相同 func(type='Event') dict元素将转换为相同keyword arguments

费耶

* 将解压缩列表元素,它们将被视为 positional arguments

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


4

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

>>> 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.