इस प्रकार का सॉर्ट जिसमें आप स्ट्रिंग के भीतर संख्याओं के आधार पर सॉर्ट करना चाहते हैं, प्राकृतिक सॉर्ट या मानव सॉर्ट कहलाते हैं। उदाहरण के लिए, यदि आपके पास टेक्स्ट है:
['Hello1','Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
फिर आप चाहते हैं कि क्रमबद्ध सूची हो:
['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']
और नहीं:
['Hello1','Hello12', 'Hello17', 'Hello2', 'Hello25', 'Hello29']
ऐसा करने के लिए हम अतिरिक्त पैरामीटर का उपयोग कर सकते हैं जो सॉर्ट () का उपयोग करता है। यह एक फ़ंक्शन है जिसे सूची में प्रविष्टि से कुंजी की गणना करने के लिए कहा जाता है। हम स्ट्रिंग से नंबर निकालने के लिए रेगेक्स का उपयोग करते हैं और टेक्स्ट और नंबर दोनों पर सॉर्ट करते हैं।
import re
def atoi(text):
return int(text) if text.isdigit() elsetext
def natural_keys(text):
return [ atoi(c) for c in re.split('(\d+)',text) ]
my_list =['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
my_list.sort(key=natural_keys)
print my_list यह आपको आउटपुट देगा:
['Hello1','Hello2', 'Hello12', 'Hello17', 'Hello25', 'Hello29']