Python dict'i kwargs'a mı dönüştürüyorsunuz?


323

Sınıf mirasını kullanarak ve bu nedenle birlikte anahtar / değer çiftleri ekleyerek güneş yanığı (solr arayüzü) için bir sorgu oluşturmak istiyorum. Sunburnt arayüzü anahtar kelime bağımsız değişkenleri alır. Bir sözlüğü nasıl ({'type':'Event'})anahtar kelime argümanlarına dönüştürebilirim (type='Event')?

Yanıtlar:


563

Kullanım çift yıldız (aka çift uyarısı? ) Operatörünü:

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

eşittir

func(type='Event')

82
ve eğer zaten "myDict" adlı bir dikte nesneniz varsa, sadece func(**myDict) .iemyDict = {"type": "event"}
James Khoury

3
Bu, python standart belgelerinde oldukça iyi bir şekilde ele alınmıştır. Ayrıca bkz: stackoverflow.com/questions/1137161 . (dmid: // juice_cobra_hush)
dreftymac

1
Bu, özellikle sözlükleri Swagger model örneklerine dönüştürürken zekice faydalıdır. Teşekkürler.
timmins

13

** operatör burada yardımcı olacaktır.

**Operatör dict elemanları açmak ve böylece **{'type':'Event'}olarak ele alınırtype='Event'

func(**{'type':'Event'})func(type='Event')yani dikte unsurları ile aynıdır keyword arguments.

Bilginize

*liste öğelerini paketinden çıkarır ve öğe olarak değerlendirilir positional arguments.

func(*['one', 'two']) ile aynı func('one', 'two')


4

Aşağıda, bir **sözlükteki değerleri anahtar kelime bağımsız değişkenleri olarak iletmek için operatörün nasıl kullanılacağını gösteren eksiksiz bir örnek verilmiştir .

>>> 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.