🔍 Как сортировать по двум параметрам в Python: полезные советы и трюки
my_list = [
{"param1": 5, "param2": "b"},
{"param1": 3, "param2": "a"},
{"param1": 5, "param2": "a"},
{"param1": 3, "param2": "b"},
]
sorted_list = sorted(my_list, key=lambda x: (x["param1"], x["param2"]))
print(sorted_list)
Обратите внимание:
- Вам необходимо указать функцию `key`, которая будет возвращать значения параметров для сортировки.
- В данном примере используется лямбда-функция `lambda x: (x["param1"], x["param2"])`, которая возвращает кортеж значений параметров для каждого элемента списка.
- Передавая кортеж значений в `key`, вы указываете `sorted()` сначала сортировать по первому значению, а затем по второму значению.
Надеюсь, это помогло! Если у вас есть еще вопросы, обращайтесь!
Детальный ответ
Когда вам нужно отсортировать данные по двум параметрам в Python, вы можете использовать функцию sorted()
с конструкцией lambda
для определения кастомной сортировки. Давайте посмотрим на пример:
data = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Alice', 'age': 20},
{'name': 'Charlie', 'age': 35},
{'name': 'Bob', 'age': 25}
]
sorted_data = sorted(data, key=lambda x: (x['name'], x['age']))
print(sorted_data)
В данном примере мы имеем список словарей data
, содержащий записи с именами и возрастами. Мы используем функцию sorted()
для сортировки этого списка по двум параметрам: сначала по имени (в алфавитном порядке) и затем по возрасту (по возрастанию).
В функции key
мы передаем лямбда-выражение, которое возвращает кортеж из значений имени и возраста для каждой записи. Это гарантирует, что данные сортируются сначала по имени, а затем по возрасту.
Результат сортировки будет выведен на экран:
[
{'name': 'Alice', 'age': 20},
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 35}
]
Вы также можете менять порядок сортировки, добавляя знак минуса (-) перед параметрами. Например, если вы хотите сначала сортировать по имени в обратном алфавитном порядке, а затем по возрасту, можно изменить код следующим образом:
sorted_data = sorted(data, key=lambda x: (-x['name'], x['age']))
Теперь данные будут отсортированы сначала по имени в обратном алфавитном порядке, а затем по возрасту.
Итак, теперь вы знаете, как сортировать данные по двум параметрам в Python, используя функцию sorted()
и лямбда-выражения. Удачи в ваших сортировках!