2012-02-21 24 views
19
के आधार पर tuples की एक सूची

संभव डुप्लिकेट:
python: how to sort a complex list on two different keysक्रमबद्ध दो तत्वों

मैं tuples की एक सूची मिल गया है। मैं उन्हें दो तत्वों के आधार पर सॉर्ट करना चाहता हूं। यहाँ उदाहरण पीछा कर रहा है

unsorted = [('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3), ('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)] 
sorted = [('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3), ('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)] 

मुझे पता है कि दूसरा तत्व पर उन्हें सुलझाने के लिए:

sorted(unsorted, key = lambda element : element[1]) 

लेकिन कैसे करना है कि दो कुंजी के साथ?

+2

पायथन द्वारा किया गया सॉर्टिंग स्थिर है, जिसका अर्थ है कि आप इसे वास्तव में कम से कम महत्वपूर्ण तत्व पर, सबसे महत्वपूर्ण तत्व पर दो बार क्रमबद्ध कर सकते हैं। कुछ मामलों में यह वास्तव में तेज़ हो सकता है (लेकिन केवल कुछ बार)। –

उत्तर

38
sorted(unsorted, key=lambda element: (element[1], element[2])) 

मैंने नमूना आउटपुट से चाबियों के लिए एक आदेश ग्रहण किया है।

+2

सॉर्ट किया जा सकता है (unsorted, key = lambda तत्व: (तत्व [1:])) या क्रमबद्ध (unsorted, key = lambda तत्व: (तत्व [1: 3])) बेहतर है – pod2metra

+2

@ pod2metra कई संभावनाएं हैं। शायद सबसे अच्छा 'ऑपरेटर.इटमेटेटर (1,2) 'होगा। –

संबंधित मुद्दे