πŸ” Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Python: простой способ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sorted() Π² сочСтании с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ key. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ сортировка, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π΅ Π² качСствС значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° key. Π­Ρ‚Π° функция Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ производится сортировка.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


# Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив
array = [{'name': 'John', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 20}]

# Ѐункция для сортировки ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ 'name'
def sort_by_name(item):
    return item['name']

# Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ 'name'
sorted_array = sorted(array, key=sort_by_name)

print(sorted_array)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sort_by_name() Π² качСствС значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° key. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ элСмСнт массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° 'name'. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, массив Π±ΡƒΠ΄Π΅Ρ‚ отсортирован Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π° 'name'.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:


[{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 20}, {'name': 'John', 'age': 25}]

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, ΡƒΠΊΠ°Π·Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сортировки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ key.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Python

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ - ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Python. Π­Ρ‚Π° опСрация позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ элСмСнты массива ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ, ΠΊΠ°ΠΊΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ тСкстовая строка. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы сортировки массива ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Python.

1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sorted()

Python прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sorted(), которая позволяСт ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. Ѐункция sorted() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ key, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся функция, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ ΠΊΠ»ΡŽΡ‡ сортировки. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


arr = [5, 2, 8, 1, 9]
sorted_arr = sorted(arr, key=lambda x: x)
print(sorted_arr)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив arr содСрТит числа, Π° функция lambda опрСдСляСт ΠΊΠ»ΡŽΡ‡ сортировки. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠ»ΡŽΡ‡ΠΎΠΌ сортировки являСтся само число. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ отсортированный массив [1, 2, 5, 8, 9]. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ функция sorted() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ отсортированный массив, Π½Π΅ измСняя исходный массив.

2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sort()

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ - использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sort(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ доступСн для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° list Π² Python. ΠœΠ΅Ρ‚ΠΎΠ΄ sort() Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sorted() ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ key. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


arr = [5, 2, 8, 1, 9]
arr.sort(key=lambda x: x)
print(arr)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ sort() для массива arr ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ lambda Π² качСствС ΠΊΠ»ΡŽΡ‡Π° сортировки. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ отсортированный массив [1, 2, 5, 8, 9]. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sorted(), ΠΌΠ΅Ρ‚ΠΎΠ΄ sort() измСняСт исходный массив Π±Π΅Π· создания Π½ΠΎΠ²ΠΎΠ³ΠΎ.

3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° словарСй ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ

Если массив содСрТит словари, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ key для опрСдСлСния ΠΊΠ»ΡŽΡ‡Π° сортировки ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ полю словаря. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


students = [
    {'name': 'Alice', 'age': 20},
    {'name': 'Bob', 'age': 18},
    {'name': 'Charlie', 'age': 22}
]
sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив students содСрТит словари с полями 'name' ΠΈ 'age'. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ key=lambda x: x['age'] для сортировки словарСй ΠΏΠΎ полю 'age'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ отсортированный массив словарСй ΠΏΠΎ возрасту: [{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22}].

4. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ нСскольким ΠΊΠ»ΡŽΡ‡Π°ΠΌ

Иногда трСбуСтся сортировка массива ΠΏΠΎ нСскольким ΠΊΠ»ΡŽΡ‡Π°ΠΌ. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ список ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ key. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


students = [
    {'name': 'Alice', 'age': 20},
    {'name': 'Bob', 'age': 18},
    {'name': 'Charlie', 'age': 22}
]
sorted_students = sorted(students, key=lambda x: (x['age'], x['name']))
print(sorted_students)
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ список ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (x['age'], x['name']) Π² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ key. Массив словарСй students Π±ΡƒΠ΄Π΅Ρ‚ отсортирован сначала ΠΏΠΎ возрасту, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ отсортированный массив словарСй: [{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22}].

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Python - ваТная опСрация, которая позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ элСмСнты массива ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ. ΠœΡ‹ рассмотрСли Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы сортировки массивов с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sorted() ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sort(). Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сортировки словарСй ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈ сортировки ΠΏΠΎ нСскольким ΠΊΠ»ΡŽΡ‡Π°ΠΌ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

54 Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Python. АргумСнт key | Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Python

Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список словарСй Π² python?

#60. АргумСнт key для сортировки ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ | Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ random Π² Python? 🎲

Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° символы Π² Python? πŸβœ‚οΈ

🎨 Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠΈΠΊ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: пошаговая инструкция с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ 🏑

πŸ” Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π² Python: простой способ

πŸπŸΌΠŸΠΈΡ‚ΠΎΠ½ Пандас: Как Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π’Π°Π±Π»ΠΈΡ†Ρƒ - ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Руководство Для ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…πŸ“ˆ

πŸ’» Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ программисту Python для Ρ€Π°Π±ΠΎΡ‚Ρ‹? 🐍

πŸ”₯ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Python: простоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ