2013-11-01 7 views
10

में मूल्य की लंबाई से एक सूची क्रमबद्ध करें मुझे tuples की सूची को सॉर्ट करने में कठिनाई हो रही है। मैं सूची में एक स्ट्रिंग की लंबाई से सॉर्ट करना चाहता हूं।पायथन टुपल

उदाहरण के लिए:

l = [(99,'bbc', 121),(33,'abcd', 231),(44,'zb', 148), (23,'abcde',221)] 

अगर मैं प्रकार तत्व 1 द्वारा:

l.sort(key=itemgetter(1), reverse=True) 

इस तार की वर्णमाला रैंकिंग नहीं लंबाई पर सॉर्ट होगा। मैं पहले सबसे लंबी स्ट्रिंग के साथ, जगह और रिवर्स सॉर्ट सॉर्ट करना पसंद करूंगा।

मैं एक लैम्ब्डा और सीएमपी उपयोग कर सकते हैं,

l.sort(lambda x,y: cmp(len(x[1]), len(y[1])), reverse=True) 

लेकिन वहाँ एक और अधिक सुंदर, या pythonic तरीका है का उपयोग करके कुंजी और/itemgetter या?

उत्तर

12

वैसे आप लैम्ब्डा को आसान बनाने के कर सकते हैं:

l.sort(key=lambda t: len(t[1]), reverse=True) 

इसके अलावा, एक चर नाम के रूप में list का प्रयोग नहीं करते; यह पहले से ही एक अंतर्निहित समारोह द्वारा लिया गया है।

+0

हां यह अच्छा है। और 'सूची' का उपयोग करने पर लिया गया बिंदु, प्रतिबिंबित करने के लिए संपादित करेगा। – drexiya

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