Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเรียงลำดับ Objects ใน List ใน Python

เรียง list ของ ints, floats, strings, chars หรือ class ที่ implement __cmp__ ได้โดยเรียก sort บน list หากต้องการ descending ส่ง reverse=True

ตัวอย่าง

my_list = [1, 5, 2, 6, 0]
my_list.sort()
print(my_list)
my_list.sort(reverse=True)
print(my_list)

ผลลัพธ์

[0, 1, 2, 5, 6]
[6, 5, 2, 1, 0]

Tuples immutable ไม่มี in-place sort ใช้ sorted คืน sorted list หากไม่ต้องการ sort in-place ใช้ sorted แทน list.sort()

ตัวอย่าง

my_list = [1, 5, 2, 6, 0]
print(sorted(my_list))
print(sorted(my_list, reverse=True))

ผลลัพธ์

[0, 1, 2, 5, 6]
[6, 5, 2, 1, 0]

หาก list ของ objects ไม่มี __cmp__ ใช้ key argument ระบุวิธีเปรียบเทียบ เช่น list of dictionaries เรียงตาม key 'size':

ตัวอย่าง

def get_my_key(obj):
    return obj['size']

my_list = [{'name': "foo", 'size': 5}, {'name': "bar", 'size': 3}, {'name': "baz", 'size': 7}]
my_list.sort(key=get_my_key)
print(my_list)

ผลลัพธ์

[{'name': 'bar', 'size': 3}, {'name': 'foo', 'size': 5}, {'name': 'baz', 'size': 7}]

เรียก function สำหรับแต่ละ entry เรียงตามค่าที่คืนมา ใช้กับ object ได้โดย return attribute