Mengkonversi Python dict ke kwargs?


323

Saya ingin membangun kueri untuk sunburnt (antarmuka solr) menggunakan warisan kelas dan karenanya menambahkan pasangan nilai kunci secara bersamaan. Antarmuka sunburnt mengambil argumen kata kunci. Bagaimana saya bisa mengubah dict ({'type':'Event'})menjadi argumen kata kunci (type='Event')?

Jawaban:


563

Gunakan operator bintang ganda (alias double-splat? ):

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

setara dengan

func(type='Event')

82
dan jika Anda sudah memiliki objek dict yang disebut "myDict" Anda hanya func(**myDict) .iemyDict = {"type": "event"}
James Khoury

3
Ini cukup tercakup dalam dokumentasi standar python. Lihat juga: stackoverflow.com/questions/1137161 . (dmid: // juice_cobra_hush)
dreftymac

1
Ini sangat membantu, terutama ketika menggunakan kamus konversi ke instance model Swagger. Terima kasih.
timmins

13

** Operator akan sangat membantu di sini.

**operator akan membongkar elemen dict dan dengan demikian **{'type':'Event'}akan diperlakukan sebagaitype='Event'

func(**{'type':'Event'})sama dengan func(type='Event')mis. elemen dikt akan dikonversi ke keyword arguments.

FYI

*akan membongkar elemen daftar dan mereka akan diperlakukan sebagai positional arguments.

func(*['one', 'two']) sama dengan func('one', 'two')


4

Berikut ini adalah contoh lengkap yang menunjukkan cara menggunakan **operator untuk memberikan nilai dari kamus sebagai argumen kata kunci.

>>> 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.