2011-01-26 17 views
23

मैं इसअजगर - एक नेस्टेड सूची के दूसरे कॉलम में अधिकतम मूल्य ढूँढना

alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20], ['strontium', 38], ['barium', 56], ['radium', 88]] 

की तरह एक सूची है तो मैं बस max(list) विधि का उपयोग करें, यह जवाब स्ट्रोंटियम, जो अगर मैं सही होगा वापस आ जाएगी अधिकतम नाम खोजने की कोशिश कर रहा था, हालांकि मैं उस तत्व को वापस करने की कोशिश कर रहा हूं जिसका पूर्णांक उच्चतम है।

+3

यहां दिए गए उत्तरों पूरी तरह से अच्छे हैं, लेकिन यह भी एक समान प्रश्न की जांच करने योग्य हो सकता है [http://stackoverflow.com/questions/14884220/search-the-biggest-number-of-one-column- इन-ए-लिस्ट-ऑफ-लिस्ट-पायथन # 14884336), जिसे इस के डुप्लिकेट के रूप में बंद कर दिया गया था, फिर भी कुछ उपयोगी उत्तर हैं जो इनके समान नहीं हैं। –

उत्तर

46
max(alkaline_earth_values, key=lambda x: x[1]) 

कारण यह काम करता है क्योंकि कुंजीअधिकतम समारोह के तर्क एक समारोह जब अधिकतम मूल्य है जिसके द्वारा अधिकतम तत्व की खोज की जाएगी जानना चाहता है कहा जाता है कि निर्दिष्ट करता है । अधिकतम अनुक्रम में प्रत्येक तत्व के लिए उस फ़ंक्शन को कॉल करेगा। और "लैम्ब्डा एक्स: एक्स [1]" एक छोटा सा फ़ंक्शन बनाता है जो एक सूची में आता है और पहले (गिनती शून्य से शुरू होता है) तत्व देता है। तो

k = lambda x: x[1] 

def k(l): 
    return l[1] 

लेकिन छोटे और अच्छा कह इस तरह की परिस्थितियों में उपयोग करने के लिए के रूप में ही है।

+0

एक बहुत ही धन्यवाद, एक चैंप की तरह काम किया। – davelupt

+0

क्या आप लेमेन के नियमों में व्याख्या करना चाहते हैं कि यह क्या कर रहा है। मुझे लगता है कि मैं समझता हूं कि x: x [1] स्थिति को परिभाषित करता है, क्योंकि यदि मैं 0 के लिए 0 में प्रतिस्थापित करता हूं तो यह सही अधिकतम स्ट्रिंग मान देता है। लेकिन, हालांकि मैं पाइथन लाइब्रेरी को देखने के बावजूद कुंजी और लैम्ब्डा के बिंदु को पूरी तरह से समझ नहीं पा रहा हूं। – davelupt

+1

कुंजी अधिकतम() बिल्टिन फ़ंक्शन के लिए एक कीवर्ड तर्क है। मुख्य तर्क एक कॉल करने योग्य (फ़ंक्शन, लैम्ब्डा, इत्यादि) होना चाहिए जो कि पुनरावर्तनीय तत्व का एक तत्व देता है तुलना में उपयोग के लिए एक मूल्य देता है। "लैम्ब्डा एक्स: एक्स [1]" एक अज्ञात फ़ंक्शन (लैम्ब्डा) बनाता है जो पाइथन स्लाइस नोटेशन का समर्थन करने वाले किसी दूसरे तत्व का दूसरा तत्व देता है। –

5

key तर्क का उपयोग करें।

max(alk..., key=operator.itemgetter(1))