tuples

2016-05-09 23 views
10

की सूची से सबसे छोटे वाई मान के साथ वापसी टुपल मैं tuples की सूची से सबसे छोटा दूसरा सूचकांक मान (y मान) को टुपल वापस करने की कोशिश कर रहा हूं। यदि निम्नतम y मान वाले दो tuples हैं, तो सबसे बड़ा x मान (i.e पहली अनुक्रमणिका) के साथ tuple का चयन करें।tuples

उदाहरण के लिए, मैं टपल है लगता है:

x = [(2, 3), (4, 3), (6, 9)] 

मान दिया (4, 3) होना चाहिए। (2, 3), एक उम्मीदवार के रूप में x[0][1]3 (x[1][1] के रूप में ही) x[1][0] की तुलना में छोटे हैं, हालांकि, x[0][0] है।

अब तक मैं कोशिश की है:

start_point = min(x, key = lambda t: t[1]) 

हालांकि, यह केवल चेक के दूसरे सूचकांक, और दो tuples पहले सूचकांक की तुलना नहीं करता है तो अपने दूसरे सूचकांक के बराबर हैं।

+5

आप की तरह कुछ की कोशिश कर सकते: 'मिनट (एक्स, कुंजी = लैम्ब्डा टी: [टी [1], आयकर [0]])' –

उत्तर

16

कुंजी से लौटाए गए टुपल में x मान शामिल करें; कुंजी में यह दूसरा तत्व तब उपयोग किया जाएगा जब y मान के लिए टाई होती है। तुलना (छोटी से सबसे बड़ा करने के लिए) प्रतिलोम, सिर्फ इतना है कि मूल्य नकारना:

min(x, key=lambda t: (t[1], -t[0])) 

सब के बाद, -4-2 से छोटा है।

डेमो:

>>> x = [(2, 3), (4, 3), (6, 9)] 
>>> min(x, key=lambda t: (t[1], -t[0])) 
(4, 3) 
+0

क्यों 'आयकर में शून्य से [0] '? यह कोई आलोचना नहीं है, मैं इसे समझ में नहीं आता ... –

+3

@ बाइट कमांडर: क्योंकि एक टाई में * बड़ा * 'x' मान चुना जाना चाहिए, छोटे नहीं। –

+0

धन्यवाद, पूरी तरह से काम करता है। और केवल एक लाइन की आवश्यकता है! – Seb