अजगर को kwargs के लिए परिवर्तित करना?


323

मैं वर्गीय उत्तराधिकार का उपयोग करके सनबर्न (सोल इंटरफ़ेस) के लिए एक क्वेरी बनाना चाहता हूं और इसलिए कुंजी-मूल्य जोड़े को एक साथ जोड़ रहा हूं। सनबर्न इंटरफ़ेस कीवर्ड तर्क लेता है। मैं एक ({'type':'Event'})तर्कों को खोजशब्द तर्क में कैसे बदल सकता हूँ (type='Event')?

जवाबों:


562

का प्रयोग करें डबल स्टार (उर्फ डबल सूचक? ) ऑपरेटर:

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

के बराबर है

func(type='Event')

82
और आप पहले से ही एक dict वस्तु "myDict" तुम सिर्फ कहा जाता है, तो func(**myDict) चलेmyDict = {"type": "event"}
जेम्स Khoury

3
यह अजगर मानक प्रलेखन में बहुत अच्छी तरह से कवर किया गया है। यह भी देखें: stackoverflow.com/questions/1137161 । (dmid: // juice_cobra_hush)
dreftymac

1
यह शानदार रूप से सहायक है, खासकर जब स्वैगर मॉडल उदाहरणों में शब्दकोशों को परिवर्तित करने के लिए। धन्यवाद।
Timmins

13

** ऑपरेटर यहां मददगार होगा।

**ऑपरेटर तानाशाह तत्वों को अनपैक करेगा और इस तरह **{'type':'Event'}माना जाएगाtype='Event'

func(**{'type':'Event'})के रूप में ही है func(type='Event')यानी तानाशाह तत्वों को परिवर्तित किया जाएगा keyword arguments

FYI करें

*सूची तत्वों को अनपैक करेंगे और उन्हें माना जाएगा 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.