2011-06-16 9 views
18

मैं मैं इसक्रमबद्ध tuples अजगर

sorted(scores, key=lambda score: score[0], reverse=True) 

का उपयोग करके अपने स्कोर से उन्हें सुलझाने के लिए कोशिश कर रहा हूँ, लेकिन यह काम नहीं कर रहा मेरी ब्लेंडर अजगर कोड

scores=[(1489,"Sean"), (2850,"Bob"), (276,"Crap Player"), (78495, "Great Player"), (8473, "Damian"), (4860, "Andy"), (0, "Stephen")] 

में tuples की एक सूची है। मुझे कोई जानकारी नहीं है की क्यों। कोई सुझाव?

मैं माना जाता है शायद एक बेहतर कार्यान्वयन क्षेत्रों name और score के साथ एक नया Score वर्ग बनाने के लिए है

संपादित करें: तेज जबाब

यह मुझे दे रहा था के लिए

धन्यवाद लोग sorted विधि के साथ कोई त्रुटि नहीं है लेकिन सॉर्ट नहीं कर रहा था। मैंने sort() का उपयोग किया और यह काम करता है।

मुझे लगता है कि ब्लिंडर शायद ब्लेंडर में थोड़ा अजीब है?

धन्यवाद!

+3

आपका कोड ठीक काम करता है: http://codepad.org/6AT3rCw3 –

+1

यह किस तरह से काम नहीं कर रहा है? – NPE

+1

आपने शायद एक चर को क्रमबद्ध करने का परिणाम असाइन नहीं किया है, लेकिन आपको वास्तव में –

उत्तर

31

बस कार्य करें:

print sorted(scores, reverse=True) 
[(78495, 'Great Player'), (8473, 'Damian'), (4860, 'Andy'), (2850, 'Bob'), (1489, 'Sean'), (276, 'Crap Player'), (0, 'Stephen')] 

आप scores.sort(reverse=True) उपयोग कर सकते हैं अगर आप जगह में सॉर्ट करने के लिए चाहते हैं, और जिस तरह से पहले आइटम, दूसरे मद से डिफ़ॉल्ट सॉर्ट द्वारा टपल की सूची के मामले में तरह समारोह ..

+5

यह खिलाड़ियों को समान रूप से समान स्कोर वाले सॉर्ट करेगा, जो वांछनीय हो सकता है। –

+0

@RobertHensing क्या दूसरी कुंजी (यानी प्लेयर नाम) द्वारा 'क्रमबद्ध' * * * क्रमबद्ध करने का कोई तरीका है? डॉक्स का कहना है कि 'क्रमबद्ध 'स्थिर * स्थिर होने के लिए * है, इसलिए मूल आदेश को संरक्षित किया जाना चाहिए जब 1री कुंजी की तुलना की जा रही है, लेकिन ऐसा नहीं है। – ray

+0

उस स्थिति में, आपको वास्तव में 'कुंजी' फ़ंक्शन का स्पष्ट रूप से उपयोग करना होगा। उदाहरण के लिए: 'क्रमबद्ध (स्कोर, रिवर्स = ट्रू, कुंजी = लैम्ब्डा एस: एस [0]) ' – ray

10

sorted() क्रमबद्ध अनुक्रम देता है। यदि आप किसी सूची को क्रमबद्ध करना चाहते हैं तो list.sort() का उपयोग करें।

0
scores.sort(reverse=True) 
>>> print scores 
[(78495, 'Great Player'), (8473, 'Damian'), (4860, 'Andy'), (2850, 'Bob'), (1489, 'Sean'), (276, 'Crap Player'), (0, 'Stephen')]