Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Образование · 11 мая 2026 г.
Сортировка списка с элементами None может быть затруднительной: — 11 мая 2026 г. в 08:56:36.743
Сортировка списка с элементами None может быть затруднительной: In [1]: data = [ ...: dict(a=1), ...: None, ...: dict(a=-3), ...: dict(a=2), ...: None, ...: ] Попытка сортировки приведёт к ошибке: In [2]: sorted(data, key=lambda x: x['a']) --------------------------------------------------------------------------- TypeError: 'NoneType' object is not subscriptable Можно удалить None перед сортировкой, а затем добавить их обратно (в конец или начало списка — в зависимости от задачи): In [3]: sorted( ...: (d for d in data if d is not None), ...: key=lambda x: x['a'] ...: ) + [ ...: d for d in data if d is None ...: ] Out[3]: [{'a': -3}, {'a': 1}, {'a': 2}, None, None] Это громоздко. Лучше использовать более сложную функцию ключа: In [4]: sorted(data, key=lambda x: float('inf') if x is None else x['a']) Out[4]: [{'a': -3}, {'a': 1}, {'a': 2}, None, None] Если тип данных не поддерживает бесконечность (float('inf')), можно сортировать кортежи: In [5]: sorted(data, key=lambda x: (1, None) if x is None else (0, x['a'])) Out[5]: [{'a': -3}, {'a': 1}, {'a': 2}, None, None] 👉 @BookPython

