d.get
विधि (?) मेरे लिए कुंजी को वापस करते समय एक शब्दकोश में अधिकतम मूल्य खोजने के लिए शानदार रूप से काम कर रही है। लेकिन d.get
कैसे काम करता है, मुझे समझ नहीं आ रहा है और न ही कोई स्पष्टीकरण मिल रहा है। जहाँ तक मैं बता सकता हूँ: max()
एक iterable
पर पुनरावृति करता है और सबसे बड़े मूल्य का पुनरावृत्ति देता है। dict
पर पुनरावृति करते समय, यह डिफ़ॉल्ट रूप से max
key
का आकलन करता है।
मेरा भ्रम d.get
और d.get(key)
के बीच के अंतर को लेकर है। आप ()
के बिना किसी विधि को कैसे कॉल कर सकते हैं? मुझे यकीन नहीं है कि इसकी जांच कैसे करें।
foo = max(d, key = d.get)
weights = {
95: 0.0,
96: 0.0,
97: 0.30793650793650795,
98: 0.0,
99: 0.0,
100: 0.0,
101: 0.48095238095238096,
102: 0.0,
103: 0.0,
104: 0.49523809523809526,
105: 0.0}
heaviest = max(weights, key = weights.get)
--> 104
max()
के लिए वैकल्पिक तर्क का उपयोग करके कोई भी क्रमबद्ध कर सकता है value
और key
लौटाएं। मुझे समझ में नहीं आ रहा है कि key
तर्क को क्या सौंपा जा रहा है।
सबको शुक्रीया।
3 जवाब
weights.get
एक ऐसा फ़ंक्शन है जो weights
में संबंधित कुंजी के लिए एक मान देता है। जब max
सबसे बड़े मान की तलाश करता है, तो यह key
तर्क के वापसी मूल्य का उपयोग करता है, इनपुट में एक तर्क के रूप में गुजरता है।
यह कोड:
heaviest = max(weights, key=weights.get)
के बराबर है:
heaviest = max(weights, key=lambda k: weights.get(k))
या इससे भी अधिक स्पष्ट रूप से:
def fetchVal(key):
return weights.get(key) # same as weights[key]
heaviest = max(weights, key=fetchVal)
जब आप weights
को max
में पास करते हैं, तो यह डिक्शनरी की कुंजियों पर पुनरावृति करता है। मूल रूप से, max(weights, key=weights.get)
के साथ, आप कह रहे हैं: मुझे weights
की अधिकतम कुंजी दें; हालांकि, अधिकतम निर्धारित करने के लिए कुंजी के मान का उपयोग करने के बजाय, weights
में संबंधित मान का उपयोग करें।
यह अधिकतम फ़ंक्शन "कुंजी =" तर्क के रूप में प्राप्त विधि जितना अधिक नहीं है, जो एक फ़ंक्शन को तर्क के रूप में लेता है। जब आप इसे अधिकतम बताते हैं (my_dict, key=my_dict.get)
यह my_dict की कुंजियों पर पुनरावृति करता है, कुंजी = तर्क में दिए गए फ़ंक्शन के लिए प्रत्येक शब्दकोश कुंजी को पास करता है। और वह कुंजी देता है जिसके लिए फ़ंक्शन आउटपुट उच्चतम था।
max(my_dict, key=lambda k:my_dict[k])
वही करेंगे।
d.get(k)
केवल कुंजी k
के लिए शब्दकोश में मान लौटाता है।
जब आप किसी डिक्शनरी पर पुनरावृति करते हैं, तो इटरेटर डिक्शनरी कुंजियाँ लौटाता है। इसलिए प्रत्येक डिक्शनरी के लिए, max
कॉल d.get(key)
को एक दूसरे के साथ तुलना करने के लिए मान प्राप्त करने के लिए करते हैं। d[key]
के बराबर है, इसलिए यह संबंधित शब्दकोश तत्व देता है।
अंत में, max
वह कुंजी लौटाता है जो इन सभी मानों के अधिकतम से मेल खाती है।
आपके द्वारा दिया गया कोड इसके बराबर है:
foo = max(d, key = lambda k: d[k])
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।