Järjestamine mitme väärtuse järgi ennikutega

Sissejuhatus

Järjestamine on oluline ülesanne andmete korrastamisel, kuid mõnikord peate järjestama andmeid mitme väärtuse järgi. Näiteks võib olla vajadus järjestada inimesi nende vanuse ja nime järgi või raamatuid autorite ja ilmumisaasta järgi. Python võimaldab teil seda teha, kasutades kohandatud võrdlusfunktsioone.

Mitme väärtuse järgi järjestamine

Pythonis saate kasutada sorted() funktsiooni, et järjestada andmeid mitme väärtuse järgi. Selleks peate looma kohandatud võrdlusfunktsiooni, mis määrab, kuidas andmed peaksid võrreldama ja järjestama olema. Allpool on näide sellest, kuidas järjestada ennikuid vanuse ja nime järgi:

people = [
    ("Alice", 30),
    ("Bob", 25),
    ("Charlie", 30),
    ("David", 28)
]

def custom_sort(person):
    # Kasutame tuple, et esmalt järjestada vanuse ja seejärel nime järgi
    return (person[1], person[0])

sorted_people = sorted(people, key=custom_sort)

for person in sorted_people:
    print(f"{person[0]} - {person[1]}")

# Väljund:
# Bob - 25
# David - 28
# Alice - 30
# Charlie - 30

Siin loome kohandatud võrdlusfunktsiooni custom_sort, mis tagastab tuple, kus esimene element on vanus ja teine element on nimi. sorted() funktsioon kasutab seda funktsiooni, et järjestada inimesi esmalt vanuse ja seejärel nime järgi.

Mitme väärtuse järgi järjestamise põhimõte

Mitme väärtuse järgi järjestamine põhineb mõistel „võrdlusvõti“ (key). Võrdlusvõti on funktsioon, mis määrab iga elemendi kohta väärtuse, mille järgi seda järjestatakse. Võrdlusvõti funktsioon peab tagastama võrreldavate elementide võrdluste alusel võrreldava väärtuse. Järjestamine toimub siis selle väärtuse põhjal.

Lisame näite, kus järjestatakse raamatuid autorite ja ilmumisaasta järgi:

books = [
    ("Raamat A", "Autor X", 2005),
    ("Raamat B", "Autor Y", 2010),
    ("Raamat C", "Autor X", 2015),
    ("Raamat D", "Autor Z", 2005)
]

def book_sort(book):
    # Kasutame tuple, et esmalt järjestada autori ja seejärel ilmumisaasta järgi
    return (book[1], book[2])

sorted_books = sorted(books, key=book_sort)

for book in sorted_books:
    print(f"{book[0]} - {book[1]} - {book[2]}")

# Väljund:
# Raamat A - Autor X - 2005
# Raamat C - Autor X - 2015
# Raamat B - Autor Y - 2010
# Raamat D - Autor Z - 2005

Nagu näete, kasutame järjestamiseks kohandatud võrdlusfunktsiooni book_sort, mis tagastab tuple, kus esimene element on autor ja teine element on ilmumisaasta. sorted() funktsioon kasutab seda funktsiooni, et järjestada raamatuid esmalt autori ja seejärel ilmumisaasta järgi.

Kokkuvõte

Mitme väärtuse järgi järjestamine on võimalik Pythonis, kasutades sorted() funktsiooni ja kohandatud võrdlusfunktsioone. Saate määrata, kuidas elemente võrreldakse ja järjestatakse, luues võrdlusfunktsiooni, mis tagastab võrreldavate elementide kohta sobiva võrdlusaluse. See võimaldab teil järjestada andmeid vastavalt oma konkreetsetele vajadustele.

Järjestamise võimalused mitme väärtuse järgi on piiritud ja saate neid kohandada vastavalt oma projekti vajadustele.