Відповіді:
Використовуйте оператор подвійної зірки (він же " 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"}