Python dictをkwargsに変換しますか?


323

クラス継承を使用してsunburnt(solrインターフェース)のクエリを作成し、キーと値のペアを一緒に追加したいと思います。sunburntインターフェースはキーワード引数を取ります。辞書({'type':'Event'})をキーワード引数に変換するにはどうすればよい(type='Event')ですか?

回答:


563

使用ダブルスター(別名?ダブルスプラット)演算子を:

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

に相当

func(type='Event')

82
"myDict"という名前のdictオブジェクトが既にある場合は、func(**myDict) .iemyDict = {"type": "event"}
James Khoury

3
これは、Python標準ドキュメントでかなりカバーされています。次も参照してください:stackoverflow.com/questions/1137161。(dmid:// juice_cobra_hush)
dreftymac '29

1
これは、特に辞書をSwaggerモデルインスタンスに変換する場合に非常に役立ちます。ありがとう。
ティミンズ

13

** 演算子はここで役に立ちます。

**演算子はdict要素を解凍するため、次のよう**{'type':'Event'}に扱われますtype='Event'

func(**{'type':'Event'})同じであり、func(type='Event')すなわちdictの要素がに変換されますkeyword arguments

ご参考までに

*リスト要素をアンパックし、それらはとして扱われpositional argumentsます。

func(*['one', 'two']) と同じ func('one', 'two')


4

以下は、**演算子を使用して辞書からキーワード引数として値を渡す方法を示す完全な例です。

>>> 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.