2011-03-05 31 views
8

मैं सूचियों की एक सूची है (tuples के बाद से मैं यह गतिशील उत्पन्न करने के लिए नहीं किया जा सकता है) और यह एक पूर्णांक और एक नाव की सूची की एक सूची इतनी तरह के रूप में संरचित है:सूचियों की सूची सॉर्ट करने का तरीका?

[[1,1.0345],[2,5.098],[3,4.89],[2,5.97]] 

मैं करना चाहते हैं इसे सॉर्ट करें लेकिन मैंने केवल सूचियों के पहले तत्व द्वारा क्रमबद्ध करने के लिए सॉर्टिंग फ़ंक्शन में निर्मित किया है या कुछ भी नहीं किया है, लेकिन मुझे सूची के दूसरे तत्व द्वारा क्रमबद्ध करने की आवश्यकता है और मैं नहीं चाहता अपने स्वयं के सॉर्टिंग समारोह को लागू करें। तो मैं क्या चाहते हैं का एक उदाहरण है:

[[1,1.0345],[3,4.89],[2,5.098],[2,5.97]] 

कोई मुझे बताओ कैसे में से एक कार्यों छँटाई यह करने के लिए में बनाया पाने के लिए कर सकता है?

उत्तर

18

key तर्क पास करें।

L.sort(key=operator.itemgetter(1)) 
+0

यह काम किया धन्यवाद। – user381261

+1

मुझे नहीं लगता कि मैंने 'सॉर्ट' का उपयोग किया है क्योंकि हमें 'क्रमबद्ध' मिला है। लेकिन 'operator.itemgetter' अपने स्वयं के लैम्ब्डा लिखने से बेहतर है। – oylenshpeegul

+1

@oylenshpeegul: मैं वास्तव में उत्सुक हूँ। ऑपरेटर.इटमेटेटर बेहतर क्यों है? मेरा वृत्ति लैम्ब्डा लिखना है। यह छोटा, अधिक सामान्य उद्देश्य है, और मुझे कभी-कभी उपयोग किए जाने वाले मॉड्यूल के आयात की आवश्यकता नहीं होती है। itemgetter 30% तेज या ऐसा लगता है, मैं मानता हूं, लेकिन यह संभावना नहीं है कि यह वास्तविक कोड में एक बाधा होगी। – DSM

1

कैसे वे क्रमबद्ध के प्रमुख पैरामीटर का उपयोग कर ...

sorted_list = sorted([[1,1.0345],[3,4.89],[2,5.098],[2,5.97]], key=lambda x: x[1]) 

के बारे में यह अजगर बताता है की तुलना के लिए कुंजी के रूप में प्रत्येक सूची के सूचकांक 1 पर आइटम का उपयोग कर सूचियों की सूची को सॉर्ट करने।

+0

मुझे लगता है कि कोशिश की और यह मुझे वापस दे दी सूची unsorted। – user381261

+0

ऐसा इसलिए है क्योंकि क्रमबद्ध एक नई सूची देता है। अंतर्निहित .sort मौजूदा सूची का प्रकार है। –

+0

@user: धन्यवाद सेंथिल, मुझे एहसास नहीं हुआ कि शायद समझा नहीं जा सकता है। –

10
>>> l = [[1,1.0345],[2,5.098],[3,4.89],[2,5.97]] 
>>> l.sort(key=lambda x: x[1]) 
>>> l 
[[1, 1.0345], [3, 4.8899999999999997], [2, 5.0979999999999999], [2, 5.9699999999999998]] 
+0

x = [[[5,3], 1.0345], [[5,6], 5.0 9 8], [[5,4], 4.8 9], [[5,1], 5.97]] इस तरह की एक सूची के साथ , हम एक्स [0] [1] में तत्वों के संबंध में कैसे क्रमबद्ध कर सकते हैं? – nidHi

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