web-dev-qa-db-fra.com

Conversion de dict Python en kwargs?

Je souhaite créer une requête pour sunburnt (interface solr) à l'aide de l'héritage de classe et, par conséquent, l'ajout de paires clé-valeur. L'interface sunburnt prend des arguments de mots clés. Comment puis-je transformer un dict ({'type':'Event'}) en arguments de mots clés (type='Event')?

235
teaforthecat

Utilisez l'opérateur double-star (aka double-splat? ):

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

est équivalent à

func(type='Event')
420
unutbu

** opérateur serait utile ici. 

** l’opérateur décompactera les éléments dict et ainsi **{'type':'Event'} sera traité comme type='Event'

func(**{'type':'Event'}) est identique à func(type='Event') c'est-à-dire que les éléments dict seraient convertis en keyword arguments

FYI

* décompactera les éléments de la liste et ils seront traités comme positional arguments.

func(*['one', 'two']) est identique à func('one', 'two')

0
Vishvajit Pathak

Voici un exemple complet montrant comment utiliser l'opérateur ** pour transmettre les valeurs d'un dictionnaire en tant qu'arguments de mots clés.

>>> def f(x=2):
...     print(str(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
0
Ben Mares