fa
Feedback
Python | Вопросы собесов

Python | Вопросы собесов

رفتن به کانال در Telegram

📈 تحلیل کانال تلگرام Python | Вопросы собесов

کانال Python | Вопросы собесов (@python_easy_ru) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 13 108 مشترک است و جایگاه 9 738 را در دسته فناوری و برنامه‌ها و رتبه 50 761 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 13 108 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 07 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -52 و در ۲۴ ساعت گذشته برابر -3 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 6.21% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 5.90% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 814 بازدید دریافت می‌کند. در اولین روز معمولاً 773 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 4 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند ставь, модуль, строка, docker, alice تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 08 ژوئن, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

13 108
مشترکین
-324 ساعت
-147 روز
-5230 روز
آرشیو پست ها
🤔 Что такое паттерн Стратегия (Strategy) ? Это поведенческий паттерн проектирования, который определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Паттерн "Стратегия" позволяет изменять алгоритмы независимо от клиентов, которые их используют. 🚩Зачем нужен данный паттерн? 🟠Изоляция алгоритмов Позволяет инкапсулировать различные алгоритмы и использовать их независимо. 🟠Упрощение кода Устраняет дублирование кода и упрощает классы, которые используют эти алгоритмы. 🟠Гибкость и расширяемость Легко добавлять новые алгоритмы или изменять существующие без изменения клиентского кода. 🚩Как работает данный паттерн? 🟠Стратегия (Strategy) Интерфейс, определяющий общий метод, который должны реализовать все алгоритмы. 🟠Конкретные стратегии (ConcreteStrategy) Реализации различных алгоритмов, которые реализуют интерфейс стратегии. 🟠Контекст (Context) Класс, использующий стратегию для выполнения задачи.
from abc import ABC, abstractmethod

# Интерфейс стратегии
class Strategy(ABC):
    @abstractmethod
    def sort(self, data):
        pass

# Конкретные стратегии
class BubbleSortStrategy(Strategy):
    def sort(self, data):
        print("Sorting using Bubble Sort")
        for i in range(len(data)):
            for j in range(0, len(data)-i-1):
                if data[j] > data[j+1]:
                    data[j], data[j+1] = data[j+1], data[j]

class QuickSortStrategy(Strategy):
    def sort(self, data):
        print("Sorting using Quick Sort")
        self.quick_sort(data, 0, len(data) - 1)

    def quick_sort(self, data, low, high):
        if low < high:
            pi = self.partition(data, low, high)
            self.quick_sort(data, low, pi - 1)
            self.quick_sort(data, pi + 1, high)

    def partition(self, data, low, high):
        pivot = data[high]
        i = low - 1
        for j in range(low, high):
            if data[j] <= pivot:
                i = i + 1
                data[i], data[j] = data[j], data[i]
        data[i + 1], data[high] = data[high], data[i + 1]
        return i + 1

# Контекст
class SortingContext:
    def __init__(self, strategy: Strategy):
        self._strategy = strategy

    def set_strategy(self, strategy: Strategy):
        self._strategy = strategy

    def sort(self, data):
        self._strategy.sort(data)

# Клиентский код
data = [5, 2, 9, 1, 5, 6]

context = SortingContext(BubbleSortStrategy())
context.sort(data)
print(data)  # [1, 2, 5, 5, 6, 9]

context.set_strategy(QuickSortStrategy())
data = [3, 7, 8, 5, 2, 1, 9, 5, 4]
context.sort(data)
print(data)  # [1, 2, 3, 4, 5, 5, 7, 8, 9]
🚩Плюсы и минусы Изоляция алгоритмов Алгоритмы инкапсулируются в отдельные классы, что упрощает их замену и добавление. Упрощение кода Контекст использует стратегии, избегая громоздких условных операторов. ➕Гибкость и расширяемость Легко добавлять новые стратегии без изменения существующего кода. Усложнение структуры кода Добавление множества классов стратегий может усложнить проект. ➖Контекст знает о стратегиях Контекст должен знать о всех возможных стратегиях, чтобы иметь возможность их переключать. 🚩Когда использовать данный паттерн? Когда есть несколько вариантов алгоритмов для выполнения задачи. Когда нужно динамически выбирать алгоритм во время выполнения. Когда необходимо избежать множества условных операторов для выбора алгоритма. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое миксин? Миксин — это класс, который предоставляет вспомогательные методы или свойства для использования в других классах через множественное наследование. Миксины не предназначены для самостоятельного использования, их задача — расширять функциональность других классов без изменения их основной логики. Миксины помогают избежать дублирования кода и улучшить модульность в программировании. Они широко применяются в фреймворках, таких как Django, для добавления общей логики в разные классы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Каким образом происходит редактирование реляционных БД? Какой язык используется для этого? Редактирование данных в реляционных базах происходит с помощью SQL. Основные команды: - INSERT для добавления. - UPDATE для изменения. - DELETE для удаления. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что знаешь о идемпотентности? Идемпотентность — это свойство операции, при котором повторное выполнение приводит к тому же результату, что и первое. 🚩Зачем нужна идемпотентность? 🟠Надёжности если операция выполнится повторно (из-за ошибки сети), она не приведёт к неожиданному результату. 🟠Безопасности позволяет избежать дублирования данных или неожиданных изменений. 🟠API и HTTP-запросов гарантирует, что повторные вызовы API не создадут дубликатов. 🚩Идемпотентность в HTTP (REST API) В веб-разработке идемпотентность важна для API-запросов, чтобы случайные повторные вызовы не привели к непредсказуемым последствиям. Этот запрос идемпотентен — если отправить его 10 раз, пользователь "Alice" останется тем же.
POST /users { "name": "Alice" }
🚩Идемпотентность в базах данных В SQL запросы SELECT и DELETE часто идемпотентны, а INSERT — нет.
DELETE FROM users WHERE id = 5;
Этот запрос идемпотентен — удаление пользователя с ID = 5 несколько раз не изменит систему (если он уже удалён).
INSERT INTO users (name) VALUES ('Alice');
Ставь 👍 и забирай 📚 Базу знаний

🤔 Можно ли при вызове метода save() указать, какие поля изменять? Да, можно использовать параметр update_fields. Пример: instance.save(update_fields=['name', 'email']). Это ускоряет запрос и уменьшает шанс перезаписи данных, особенно если используются сигналы или кастомная логика в save(). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сгенерировать и применить миграцию? В Django миграции используются для изменения структуры базы данных (создание, изменение и удаление таблиц и полей). 🚩Генерация миграции (`makemigrations`) 🟠Создаём или изменяем модель (`models.py`) Пример модели пользователя:
from django.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
🟠Генерируем миграцию Запускаем команду:
python manage.py makemigrations
Django создаст файл миграции в migrations/
migrations/
  0001_initial.py  # Файл с SQL-изменениями
Проверяем SQL-запрос, который будет выполнен
python manage.py sqlmigrate myapp 0001
🚩Применение миграции (`migrate`) После генерации нужно применить миграции к базе данных:
python manage.py migrate
🚩Что делать, если модель изменилась? Добавим поле в models.py
class UserProfile(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    email = models.EmailField(default="example@example.com")  # Добавили поле
Сгенерируем новую миграцию
python manage.py makemigrations
Применяем изменения к БД
python manage.py migrate
🚩Откат миграций (`migrate <номер>`) Если нужно откатить последнее изменение:
python manage.py migrate myapp 0001  # Откат до первой миграции
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое кастомный менеджер модели? Кастомный менеджер модели в Django позволяет добавлять пользовательские методы для выполнения сложных запросов или фильтрации данных. Это расширяет стандартные возможности менеджеров, таких как objects. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем отличия pytz от datetime? 🟠`datetime` – встроенный модуль Python Модуль datetime позволяет работать с датами и временем, но по умолчанию он не поддерживает часовые пояса.
from datetime import datetime

dt = datetime.now()  # Получаем текущую дату и время
print(dt)  # Например: 2024-02-28 14:30:00.123456
print(dt.tzinfo)  # None (нет информации о часовом поясе)
🟠`pytz` – внешний модуль для работы с часовыми поясами Библиотека pytz добавляет поддержку часовых поясов и позволяет работать с разными временными зонами.
from datetime import datetime
import pytz

tz = pytz.timezone("Europe/Moscow")  # Часовой пояс Москвы
dt = datetime.now(tz)  # Получаем текущее время с учетом часового пояса

print(dt)  # Например: 2024-02-28 17:30:00+03:00
print(dt.tzinfo)  # Europe/Moscow
🚩Как работать с часовыми поясами правильно? Создание datetime с часовым поясом pytz
dt = datetime(2024, 2, 28, 15, 0)  # Наивная дата
tz = pytz.timezone("Europe/Moscow")
dt = tz.localize(dt)  # Присваиваем часовой пояс
print(dt)  # 2024-02-28 15:00:00+03:00
Конвертация времени между часовыми поясами
ny_tz = pytz.timezone("America/New_York")
ny_time = dt.astimezone(ny_tz)
print(ny_time)  # Конвертированное время в Нью-Йорке
Использование UTC (лучший подход для серверов)
utc_now = datetime.now(pytz.UTC)  # Текущее время в UTC
print(utc_now)  # Например: 2024-02-28 14:30:00+00:00
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое алгоритм k ближайших соседей? Алгоритм k ближайших соседей (k-NN) — это метод машинного обучения, используемый для классификации и регрессии. Он ищет k наиболее близких объектов к целевой точке (по метрике расстояния, например, евклидовой) и принимает решение на основе их меток. Это ленивый алгоритм, так как не обучается заранее, а работает прямо по данным. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как в Python происходит поиск переменной по области видимости? В Python поиск переменной происходит по правилу LEGB, которое определяет порядок поиска в четырёх областях видимости: Пример работы LEGB
x = "глобальная"  # Global

def outer():
    x = "охватывающая"  # Enclosing
    def inner():
        x = "локальная"  # Local
        print(x)  # Поиск начинается отсюда (L)
    
    inner()

outer()
Вывод
локальная
🚩Глобальные переменные (`global`) Если нужно изменить глобальную переменную внутри функции, используем global
x = 10  # Глобальная переменная

def modify_global():
    global x
    x = 20  # Меняем глобальную переменную

modify_global()
print(x)  # 20
🚩Переменные из внешней функции (`nonlocal`) Если в вложенной функции нужно изменить переменную из enclosing-области, используем nonlocal
def outer():
    x = 10  # Переменная из enclosing-области
    
    def inner():
        nonlocal x
        x = 20  # Меняем `x` в `outer()`
    
    inner()
    print(x)  # 20

outer()
🚩Что если переменная отсутствует во всех областях? Если переменная не найдена в LEGB, Python выдаст NameError
def func():
    print(y)  # Ошибка: y не объявлена!

func()  
Ошибка
NameError: name 'y' is not defined
🚩`Built-in` — встроенные функции Python в последнюю очереде проверяет встроенные функции (print(), len(), sum() и т. д.).
print = "Ошибка!"  # Переопределили встроенную функцию
print("Hello")  # TypeError: 'str' object is not callable
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как происходит профилирование запросов к БД? - В SQL: с помощью EXPLAIN, EXPLAIN ANALYZE; - PostgreSQL: pg_stat_statements, auto_explain; - MongoDB: db.setProfilingLevel(2) и system.profile; - Также с помощью APM-инструментов (NewRelic, Datadog). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужны классы BaseExceptionGroup и ExceptionGroup? В Python 3.11 были добавлены новые классы исключений BaseExceptionGroup и ExceptionGroup. Эти классы решают проблему одновременной обработки нескольких исключений, которые могут возникать в сложных ситуациях, таких как асинхронное программирование, многопоточность или обработка нескольких связанных ошибок. Давайте разберем, зачем они нужны, как их использовать и какие преимущества они дают. 🚩Зачем нужны `BaseExceptionGroup` и `ExceptionGroup`? Ранее в Python было возможно выбросить только одно исключение за раз, и обработка нескольких исключений одновременно требовала сложного и неочевидного кода. Например: При работе с асинхронными функциями или потоками может возникнуть сразу несколько ошибок, и их нужно корректно обработать. В больших приложениях или библиотеках (например, при работе с asyncio) может быть необходимость передать сразу несколько исключений, которые произошли в разных местах, как единый объект. BaseExceptionGroup и его подкласс ExceptionGroup позволяют группировать несколько исключений и выбрасывать их вместе в виде одного объекта. Это делает код более читаемым, упрощает обработку и исключает необходимость ручной агрегации ошибок. 🚩Разница между `BaseExceptionGroup` и `ExceptionGroup` BaseExceptionGroup - это базовый класс для группировки исключений. Он наследуется от BaseException и, как правило, не используется напрямую. ExceptionGroup - это подкласс, который наследуется от Exception. Этот класс используется для обработки групп исключений, которые возникают при обычных ошибках в коде (не фатальных). 🚩Как они работают? Классы исключений BaseExceptionGroup и ExceptionGroup позволяют создать "группу исключений", которая содержит несколько отдельных исключений. Это полезно, когда вам нужно: Указать несколько ошибок одновременно. Позволить обработчику исключений работать с каждым из них.
def task_1():
    raise ValueError("Ошибка в задаче 1")

def task_2():
    raise TypeError("Ошибка в задаче 2")

try:
    # Создаем группу исключений
    raise ExceptionGroup(
        "Ошибки в задачах",
        [ValueError("Ошибка в задаче 1"), TypeError("Ошибка в задаче 2")]
    )
except ExceptionGroup as eg:
    for exc in eg.exceptions:
        print(f"Обнаружено исключение: {exc}")
Результат
Обнаружено исключение: Ошибка в задаче 1
Обнаружено исключение: Ошибка в задаче 2
🚩Обработка групп исключений При обработке ExceptionGroup можно использовать механизм фильтрации с помощью конструкции except*. Это нововведение в Python 3.11 позволяет обрабатывать разные типы исключений внутри группы по-разному.
try:
    raise ExceptionGroup(
        "Ошибки в задачах",
        [ValueError("Ошибка 1"), TypeError("Ошибка 2"), ValueError("Ошибка 3")]
    )
except* ValueError as ve:
    print("Обрабатываем ValueError:", ve)
except* TypeError as te:
    print("Обрабатываем TypeError:", te)
Результат
Обрабатываем ValueError: Ошибка 1
Обрабатываем ValueError: Ошибка 3
Обрабатываем TypeError: Ошибка 2
🚩Преимущества использованияРабота с несколькими исключениями одновременно. Вы можете объединить связанные ошибки и передать их в одном объекте. ➕Четкое разграничение типов исключений. Использование except* позволяет обработать каждое исключение из группы отдельно, не теряя гибкости. ➕Удобство при асинхронном программировании. В асинхронных задачах (asyncio) часто возникает несколько ошибок одновременно, и их можно группировать для дальнейшей обработки. ➕Упрощение сложной логики. Код становится проще и понятнее, так как не нужно вручную собирать и разбирать исключения. 🚩Когда использовать? Когда вы работаете с несколькими задачами, которые могут порождать ошибки одновременно (например, асинхронный код). Когда вы хотите сообщить о нескольких связанных ошибках, не выбрасывая каждую из них отдельно. Когда требуется раздельная обработка разных типов ошибок. Ставь 👍 и забирай 📚 Базу знаний

🤔 Расскажи о сложностях с которыми столкнулась во время обучения? Основные сложности включали понимание сложных концепций, таких как многопоточность и асинхронное программирование, а также работу с малоизученными инструментами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Repost from Backend
Привет ребят! Мне в последнее время пишет очень много начинающих предпринимателей оценить их бизнес со стороны. Я как человек с 10 годами опыта в создании стартапов, как успеших так и абсолютно убыточных могу дать свою оценку. Я продавал свой бизнес в прибыль, и я также в убыток продовал несколько своих проектов. Готов с вами обсудить ваши идеи, но только сейчас, пока я пьян и на веселе. Напишите @kivaiko и мы созвонимся, чтобы я трезво оценивал ваши шансы и дал экспертные рекомендации.

🤔 Что такое cookie? Это небольшой файл, который создаётся веб-сайтом и сохраняется в браузере пользователя. Куки используются для хранения информации, связанной с пользователем, чтобы улучшить его взаимодействие с сайтом. 🚩Зачем нужны куки? Куки помогают веб-сайтам «запоминать» данные о пользователе. Вот основные цели их использования: 🟠Аутентификация Например, после входа в аккаунт куки сохраняют ваш статус (авторизован вы или нет). 🟠Сохранение предпочтений Куки могут хранить ваши настройки, например, выбранный язык или тему сайта. 🟠Сессии и корзины Если вы добавляете товары в корзину в интернет-магазине, эта информация может храниться в куки. 🟠Отслеживание действий Куки используются для аналитики и рекламы, чтобы понять, как вы взаимодействуете с сайтом, или показать персонализированные объявления. 🚩Как работают куки? Когда вы заходите на сайт, сервер может отправить куки вашему браузеру вместе с HTTP-ответом. Браузер сохраняет эти данные и отправляет их обратно на сервер при последующих запросах. Куки привязаны к домену, и только этот домен может их читать. 🚩Пример использования куки Создание куки на сервере (Python, Flask)
from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/set_cookie')
def set_cookie():
    response = make_response("Cookie установлена!")
    response.set_cookie('username', 'JohnDoe')  # Устанавливаем куки с именем "username"
    return response

@app.route('/get_cookie')
def get_cookie():
    username = request.cookies.get('username')  # Получаем значение куки
    return f'Привет, {username}!' if username else 'Куки не найдены.'

if __name__ == '__main__':
    app.run(debug=True)
🚩Типы куки 🟠Сессионные куки (Session Cookies) Хранятся только во время работы браузера и удаляются после его закрытия. 🟠Постоянные куки (Persistent Cookies) Сохраняются на устройстве пользователя до истечения срока действия. 🟠Безопасные куки (Secure Cookies) Передаются только через HTTPS для обеспечения безопасности. 🟠HttpOnly куки Не доступны через JavaScript, используются для защиты от XSS-атак. 🚩Плюсы и минусы ➕Помогают сохранять пользовательские данные для упрощения работы с сайтом. ➕Могут улучшить пользовательский опыт за счёт персонализации. ➖Могут использоваться для отслеживания активности (privacy concerns). ➖Неправильное управление куки может привести к утечкам данных. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое домен / доменное имя? Доменное имя — это человеко-понятный адрес сайта в интернете, например: example.com. Оно состоит из уровней: - com — домен верхнего уровня. - example — домен второго уровня. - Можно также иметь поддомены: blog.example.com. Домен привязан к IP-адресу через DNS. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Могу вас познакомить? - Это Софи. И теперь она будет искать работу за тебя. Не, я серьезно. Она умеет составлять резюме, дела
Могу вас познакомить? - Это Софи. И теперь она будет искать работу за тебя. Не, я серьезно. Она умеет составлять резюме, делать отклики, и общаться с рекрутерами. Причем все это, она делает лучше чем ты сам. Она очень умная. Ты сам ей расскажешь про себя и свой опыт, а она продаст его так, как будто самый лучший маркетолог и карьерный консультант объединились и решили тебе помочь. Затем ты подключишь ее к своему аккаунту на HH.ру, и дальше произойдет магия. Она сама подготовит резюме. Она сама будет делать до 100 откликов в день. Она сама будет писать индивидуальные сопроводительные под КАЖДУЮ вакансию. И она сама будет переписываться с рекрутером и отвечать на его вопросы. И нет, она не будет откликаться на всякий шлак типо QA вакансий если ты Python разработчик. Или на Senior, хотя ты молодой джун. Это НЕ просто СПАМ откликами с первым попавшимся резюме. Это твой новый личный ассистент, который знает про поиск первой работы в IT — ВСЕ. Ведь мы больше 3.5 лет занимаемся трудоустройством и тренировали ее под тебя. Хочешь с ней познакомиться?) Тогда - велком. 24 июня мы анонсируем запуск нашего приложения и дадим доступ для 350 пользователей. После закроем продажи на несколько недель. В день анонса каждый пользователь получит: -3 дня бесплатного доступа к Софи. -1 месяц бесплатного доступа к тренажеру собеседований. -3 месяца подписки на Софи за 14990 3500 рублей. 24 июня. 350 мест. Подпишись, чтобы не пропустить⚡️

🤔 Как отсортировать список словарей по определенному полю? Для сортировки списка словарей по определенному полю в Python удобно использовать функцию sorted() или метод sort(). Оба подхода позволяют указать ключ сортировки с помощью параметра key, где можно передать либо функцию, либо лямбда-выражение, которое извлекает значение из словаря для сортировки. 🚩Почему это важно? Списки словарей часто используются для хранения структурированных данных. Например, вы можете иметь список сотрудников, где каждый сотрудник представлен в виде словаря с полями, такими как имя, возраст и зарплата. Сортировка по определенному полю позволяет упорядочить данные, чтобы ими было проще пользоваться или отображать. 🚩Как это сделать? 🟠Использование функции `sorted()` Эта функция возвращает новый отсортированный список.
   employees = [
       {"name": "Alice", "age": 30, "salary": 70000},
       {"name": "Bob", "age": 25, "salary": 50000},
       {"name": "Charlie", "age": 35, "salary": 120000}
   ]

   # Сортировка по возрасту
   sorted_employees = sorted(employees, key=lambda x: x["age"])

   print(sorted_employees)
   
Результат
   [{'name': 'Bob', 'age': 25, 'salary': 50000},
    {'name': 'Alice', 'age': 30, 'salary': 70000},
    {'name': 'Charlie', 'age': 35, 'salary': 120000}]
   
🟠Использование метода `sort()` Этот метод изменяет существующий список.
   employees = [
       {"name": "Alice", "age": 30, "salary": 70000},
       {"name": "Bob", "age": 25, "salary": 50000},
       {"name": "Charlie", "age": 35, "salary": 120000}
   ]

   # Сортировка по зарплате
   employees.sort(key=lambda x: x["salary"])

   print(employees)
   
Результат
   [{'name': 'Bob', 'age': 25, 'salary': 50000},
    {'name': 'Alice', 'age': 30, 'salary': 70000},
    {'name': 'Charlie', 'age': 35, 'salary': 120000}]
   
🟠Сортировка в обратном порядке Установите параметр reverse=True, чтобы отсортировать в порядке убывания.
   sorted_employees_desc = sorted(employees, key=lambda x: x["age"], reverse=True)
   print(sorted_employees_desc)
   
🟠Использование функции `itemgetter` из модуля `operator` Это более эффективный способ, чем лямбда-функция, особенно для больших данных.
   from operator import itemgetter

   sorted_employees = sorted(employees, key=itemgetter("age"))
   print(sorted_employees)
   
🚩Обработка отсутствующих значений Если поле может отсутствовать в некоторых словарях, можно использовать параметр key для обработки таких ситуаций.
employees = [
    {"name": "Alice", "age": 30},
    {"name": "Bob"},
    {"name": "Charlie", "age": 35}
]

sorted_employees = sorted(employees, key=lambda x: x.get("age", 0))
print(sorted_employees)
Результат
[{'name': 'Bob'},
 {'name': 'Alice', 'age': 30},
 {'name': 'Charlie', 'age': 35}]
Ставь 👍 и забирай 📚 Базу знаний

👩‍💻 Ищем Python разработчиков. Удалёнка, релокейт платим много! Специально для Вас, собираем лучшие вакансии для Python раз
👩‍💻 Ищем Python разработчиков. Удалёнка, релокейт платим много! Специально для Вас, собираем лучшие вакансии для Python разработчиков с прямыми контактами в Telegram на канале @it_match_python Подпишись чтобы не упустить свой шанс получить лучший оффер! ➡️ Посмотреть вакансии

🤔 Что такое list comprehension? List comprehension в Python — это способ создания списков, используя конструкцию, состоящую из выражения и одного или нескольких циклов for и условий if в одной строке. Это позволяет генерировать новые списки путем применения выражения к каждому элементу последовательности, делая код компактным и часто более читаемым. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний