Відповіді:
Використовуйте оператор подвійної зірки (він же " double-splat?" ):
func(**{'type':'Event'})
еквівалентно
func(type='Event')
**
Тут буде корисний оператор.
**
оператор розпакує елементи dict і, таким чином **{'type':'Event'}
, буде розглядатися якtype='Event'
func(**{'type':'Event'})
те саме, що func(type='Event')
тобто елементи dict будуть перетворені на keyword arguments
.
FYI
*
розпакує елементи списку, і вони будуть розглядатися як positional arguments
.
func(*['one', 'two'])
те саме, що func('one', 'two')
Ось повний приклад, який показує, як використовувати **
оператор для передачі значень зі словника як аргументів ключових слів.
>>> 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
func(**myDict)
.iemyDict = {"type": "event"}