پرسش

چطور می‌توانم لیستی از اشیاء را بر اساس یک ویژگی از اشیاء مرتب کنم؟

How do I sort a list of objects based on an attribute of the objects?

چطور می‌توانم یک لیست از اشیاء را بر اساس یک ویژگی از اشیاء مرتب کنم؟ مثلاً فرض کنید لیستی از اشیاء دارم و هر شیء یک ویژگی خاص دارد. می‌خواهم لیست را بر اساس این ویژگی مرتب کنم.

1403/06/05
پاسخ
رضا دولتی عاشق برنامه نویسی و هوش مصنوعی!
بیوگرافی رضا دولتی

برای مرتب کردن لیستی از اشیاء بر اساس یک ویژگی خاص، می‌توانیم از متد sorted() در پایتون استفاده کنیم. این متد به ما این امکان را می‌دهد که یک تابع کلیدی را برای مرتب‌سازی مشخص کنیم. بیایید با یک مثال این موضوع را روشن کنیم.

فرض کنید یک لیست از اشیاء داریم که هر شیء نمایانگر یک فرد است و ویژگی‌ای به نام age دارد. می‌خواهیم این لیست را بر اساس سن افراد مرتب کنیم.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
people = [
    Person("Alice", 30),
    Person("Bob", 25),
    Person("Charlie", 35)
]
sorted_people = sorted(people, key=lambda person: person.age)
for person in sorted_people:
    print(f"{person.name}: {person.age}")

در اینجا، تابع lambda person: person.age به عنوان کلید مرتب‌سازی استفاده می‌شود. این تابع سن هر شخص را به عنوان معیاری برای مرتب‌سازی برمی‌گرداند. با این کار، لیست بر اساس سن افراد به ترتیب صعودی مرتب می‌شود.

اگر بخواهید لیست را به ترتیب نزولی مرتب کنید، می‌توانید از پارامتر reverse=True استفاده کنید:

sorted_people_desc = sorted(people, key=lambda person: person.age, reverse=True)
پاسخ: 1403/06/05
آخرین آپدیت: 1403/08/08