Custom sort — பிரச்சினை விதிகள்
பெரும்பாலும் “ஏறுவரிசை” மட்டும் கேட்பதில்லை: இரண்டாம் நெடுவரிசையை இறங்குவரிசை, சமநிலையில் முதல் நெடுவரிசை ஏறுவரிசை போன்ற விதிகள். இதுவே custom sorting — வணிக விதிகளை key function அல்லது tuple வரிசையாக மாற்றுவது.
உண்மை உலகில் இது ஏன் முக்கியம்?
ரைடு-ஹேலிங் செயலி வருவதற்கான நேரம், மதிப்பீடு, தூரம் போன்ற tuple வரிசை கொண்டு ஓட்டுநர்களைக் காட்டலாம். விளையாட்டு அட்டவணை புள்ளிகள், கோல் வித்தியாசம், அடிக்கப்பட்ட கோல்கள் — இது வரிசைப்படுத்தும் விதி. பிழை கண்காணிப்பு கடுமை, வயது, ID போன்ற வரிசை. Python sorted(..., key=) மற்றும் SQL ORDER BY இதே கருத்து.
மையக் கருத்து (மாணவர்களுக்கான விளக்கம்)
ஒவ்வொரு பொருளையும் tuple key ஆக மாற்றவும்; Python இயல்பு lexicographic வரிசை உங்கள் விதியுடன் பொருந்துமா எனச் சோதிக்கவும். இறங்குவரிசைக்கு எண்ணாக இருந்தால் எதிர்குறி, இல்லையெனில் (-x, secondary). விலையுயர்ந்த key என்றால் ஒருமுறை கணக்கிட்டு decorate-sort-undecorate. Stable sort (sorted, list.sort) சம முதன்மை விசைகளில் உள்ளீட்டு வரிசையைக் காக்கும்.
Pythonில் முயற்சி செய்வோம்
rows = [
("ana", 92, 1),
("bob", 92, 2),
("cara", 88, 3),
]
# Sort by score descending, then name ascending
print(sorted(rows, key=lambda r: (-r[1], r[0])))
அடிக்கடி நேரும் தவறுகள்
- tuple திட்டம் இல்லாமல் ஏறு/இறங்கு கலப்பு — சோதனைகள் தவறாகும்.
- float-க்கு எதிர்குறி — NaN சிக்கல்கள்.
- பகிரப்பட்ட பட்டியலை இடையில் மாற்றுதல் — பக்க விளைவுகள்.
முக்கியச் சுருக்கக் குறிப்புகள்
- விதியை tuple keys அல்லது
key=மூலம் குறியீடாக்கவும். - பல நிலை tie-க்கு stable sort பயன்படுத்தவும்.
- பெரிய அட்டவணைக்கு
operator.itemgetterபடிப்படி வேகம்.
