✍️ پارامتر key میگوید از هر عضو چه ویژگیای را برای مقایسه برداریم. خود عضو عوض نمیشود؛ فقط کلید مقایسه از آن استخراج میشود. مثلاً key=len رشتهها را بر اساس طول مرتب میکند و خروجی همچنان رشته است، نه عدد طولها. برای رکوردها هم میتوانیم یک فیلد را به عنوان کلید انتخاب کنیم.
در نمونه ['آبی', 'زر', 'بنفش'] ترتیب طولی از کوتاهتر به بلندتر است. حالا به این مثال ساده با حروف لاتین نگاه کن تا شمارش نویسهها روشن باشد:
names = ['Mina', 'Ali', 'Nima', 'Bo']
result = sorted(names, key=len)
print(result)
طولها به ترتیب چهار، سه، چهار و دو هستند. وقتی دو کلید برابرند، sorted در پایتون ترتیب قبلی آن اعضا را حفظ میکند؛ به این ویژگی پایداری میگیم. پس برای دو نام چهارحرفی نباید خودمان ترتیب الفبایی اضافه کنیم، مگر قرارداد جداگانهای آن را بخواهد.
خطای رایج، خواندن key=len به شکل «ابتدا فهرست را به طولها تبدیل کن» یا حدس زدن تساوی با الفباست. هر دو جواب خروجی متفاوتی میسازند. ابتدا کلید هر عضو را کنارش یادداشت کن و سپس با حفظ ترتیب موارد مساوی، اعضای اصلی را بچین.
فعالیت شما
خروجی sorted(names,key=len) را انتخاب کن؛ اعضا رشته باقی میمانند و طول برابر ترتیب ورودی را حفظ میکند.