wake-up-neo.net

Konvertieren von Python-Diktieren in Kwargs?

Ich möchte eine Abfrage für sunburnt (solr interface) erstellen, die Klassenvererbung verwendet und daher Schlüssel-Wert-Paare zusammenfügt. Die Sunburnt-Schnittstelle akzeptiert Schlüsselwortargumente. Wie kann ich ein Diktum ({'type':'Event'}) in Schlüsselwortargumente (type='Event') umwandeln?

235
teaforthecat

Verwenden Sie den Operator double-star (aka double-splat? ):

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

ist äquivalent zu

func(type='Event')
420
unutbu

** Operator wäre hier hilfreich. 

Der **-Operator entpackt die dict-Elemente und wird **{'type':'Event'} als type='Event' behandelt.

func(**{'type':'Event'}) ist mit func(type='Event') identisch, d. H. Die Dict-Elemente würden in den keyword arguments konvertiert. 

Zu Ihrer Information

* entpackt die Listenelemente und sie werden als positional arguments behandelt.

func(*['one', 'two']) ist identisch mit func('one', 'two')

0

Ein vollständiges Beispiel zeigt, wie der Operator ** verwendet wird, um Werte aus einem Wörterbuch als Schlüsselwortargumente zu übergeben.

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