ในการเรียงลำดับรายการ ints, floats, strings, chars หรือคลาสอื่น ๆ ที่ใช้วิธี __cmp__ สามารถจัดเรียงได้เพียงแค่เรียก sort ในรายการ หากคุณต้องการเรียงลำดับรายการในลำดับย้อนกลับ (จากมากไปน้อย) ให้ส่งผ่านพารามิเตอร์ย้อนกลับเช่นกัน
ตัวอย่าง
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]
เนื่องจากทูเพิลนั้นไม่เปลี่ยนรูป พวกมันจึงไม่มีฟังก์ชันการจัดเรียงแบบแทนที่ที่สามารถเรียกได้โดยตรงจากทูเพิล คุณต้องใช้ฟังก์ชัน sorted ซึ่งส่งคืนรายการที่เรียงลำดับ หากคุณไม่ต้องการเรียงลำดับรายการ ให้ใช้ sorted แทนการเรียงลำดับ list class method 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]
ถ้าคุณมีรายการของอ็อบเจ็กต์ที่ไม่มีเมธอด __cmp__ ในคลาส คุณสามารถใช้อาร์กิวเมนต์คีย์เพื่อระบุวิธีเปรียบเทียบ 2 อิลิเมนต์ ตัวอย่างเช่น หากคุณมีพจนานุกรมในรายการและต้องการจัดเรียงพจนานุกรมตามขนาดคีย์ ให้ทำดังนี้:
ตัวอย่าง
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}]
มันจะเรียกใช้ฟังก์ชันที่ระบุสำหรับแต่ละรายการและเรียงลำดับตามค่านี้สำหรับแต่ละรายการ คุณยังระบุฟังก์ชันเดียวกันสำหรับออบเจ็กต์ได้ด้วย โดยส่งคืนแอตทริบิวต์ของออบเจ็กต์