Преобразование Python dict в kwargs? - PullRequest
261 голосов
/ 19 апреля 2011

Я хочу построить запрос для sunburnt (интерфейс solr), используя наследование классов и, следовательно, добавляя пары ключ-значение вместе.Загорелый интерфейс принимает ключевые аргументы.Как я могу преобразовать dict ({'type':'Event'}) в ключевые аргументы (type='Event')?

Ответы [ 3 ]

454 голосов
/ 19 апреля 2011

Используйте оператор double-star (он же double-splat? ):

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

эквивалентно

func(type='Event')
5 голосов
/ 08 сентября 2018

** оператор был бы полезен здесь.Оператор

** распакует элементы dict и, таким образом, **{'type':'Event'} будет рассматриваться как type='Event'

func(**{'type':'Event'}), как func(type='Event'), т.е. элементы dict будут преобразованы вkeyword arguments.

FYI

* распакует элементы списка, и они будут рассматриваться как positional arguments.

func(*['one', 'two']) аналогично func('one', 'two')

1 голос
/ 02 декабря 2018

Вот полный пример, показывающий, как использовать оператор ** для передачи значений из словаря в качестве аргументов ключевых слов.

>>> 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
...