Converting Python dict to kwargs?
Solution 1
Use the double-star (aka double-splat?) operator:
func(**{'type':'Event'})
is equivalent to
func(type='Event')
Solution 2
**
operator would be helpful here.
**
operator will unpack the dict elements and thus **{'type':'Event'}
would be treated as type='Event'
func(**{'type':'Event'})
is same as func(type='Event')
i.e the dict elements would be converted to the keyword arguments
.
FYI
*
will unpack the list elements and they would be treated as positional arguments
.
func(*['one', 'two'])
is same as func('one', 'two')
Solution 3
Here is a complete example showing how to use the **
operator to pass values from a dictionary as keyword arguments.
>>> 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
teaforthecat
Updated on July 31, 2022Comments
-
teaforthecat almost 2 years
I want to build a query for sunburnt(solr interface) using class inheritance and therefore adding key - value pairs together. The sunburnt interface takes keyword arguments. How can I transform a dict
({'type':'Event'})
into keyword arguments(type='Event')
? -
James Khoury about 13 yearsand if you already have a dict object called "myDict" you just
func(**myDict)
.i.emyDict = {"type": "event"}
-
dreftymac over 8 yearsThis is pretty well-covered in the python standard documentation. See also: stackoverflow.com/questions/1137161. (dmid://juice_cobra_hush)
-
timmins over 5 yearsThis is brilliantly helpful, especially when using converting dictionaries into Swagger model instances. Thanks.