2015-07-09 5 views
6

मैं एक ऐसा प्रोग्राम लिखने की कोशिश कर रहा हूं जो आइटम में अंतिम चरित्र के आधार पर तारों की सूची का आदेश दे।पायथन: स्ट्रिंग के अंतिम चरित्र द्वारा क्रमबद्ध सूची कैसे करें

["Tiger 6", "Shark 4", "Cyborg 8"] मेरी सूची कैसे आयात की जाती है, लेकिन मुझे अंत में संख्याओं के आधार पर उन्हें संख्यात्मक क्रम में रखना होगा।

अग्रिम धन्यवाद!

+0

संख्या हमेशा एक अंक हैं? –

+0

इस उदाहरण में, हाँ। –

उत्तर

9

मैं एक ऐसा प्रोग्राम लिखने की कोशिश कर रहा हूं जो आइटम में अंतिम चरित्र के आधार पर तारों की सूची का आदेश दे।

>>> s = ["Tiger 6", "Shark 4", "Cyborg 8"] 
>>> sorted(s, key=lambda x: int(x[-1])) 
['Shark 4', 'Tiger 6', 'Cyborg 8'] 

पिछले पर अंकों की अधिक संख्या देखते हैं इस करता है, तो कोशिश करें।

>>> import re 
>>> sorted(s, key=lambda x: int(re.search(r'\d+$',x).group())) 
['Shark 4', 'Tiger 6', 'Cyborg 8'] 

re.search(r'\d+$',x).group() अंतरिक्ष पूर्ववर्ती के अंतिम ध्यान दिए बिना पर नंबर उपस्थित लाने के लिए मदद करता है।

+0

* फ़ंक्शन * की बजाय कुंजी के लिए लैम्ब्डा का उपयोग क्यों करें। – wwii

+0

लैम्ब्डा का उपयोग अज्ञात फ़ंक्शन बनाने के लिए किया जाता है। –

1

संख्या एकल अंक नहीं हैं, तो आप कोशिश कर सकते हैं -

>>> l = ["Tiger 6", "Shark 4", "Cyborg 8", "Temporary 12"] 
>>> l.sort(key = lambda x: int(x.rsplit(' ',1)[1])) 
>>> l 
['Shark 4', 'Tiger 6', 'Cyborg 8', 'Temporary 12'] 

str.rsplit(s, n) समारोह स्ट्रिंग की शुरुआत की दिशा में अंत में स्ट्रिंग बंटवारे शुरू होता है और n विभाजन के बाद बंद हो जाता है। उपर्युक्त मामले में, यह केवल एक स्थान पर स्ट्रिंग को एक बार विभाजित करता है।

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