Русский
Открыть в Telegram

Пост Сортировка списка с элементами None может быть затруднительной:

11 мая 2026
Б
Библиотека Python разработчика | Книги по питону
Сортировка списка с элементами 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] 📲 Мы в MAX 👉@BookPython
4 · 1.3K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуСтандартный модуль json имеет интерфейс командной строки, который может быть полезен для форматирования JSON только с помощью Python. Модуль для этого называетсББиблиотека Python разработчика | Книги по питонуФункция round округляет число до заданной точности в десятичных знаках. >>> round(1.2) 1 >>> round(1.8) 2 >>> round(1.228, 1) 1.2 Также можно задать отрицательн
это сообщение
ББиблиотека Python разработчика | Книги по питонуКогда вы используете fork для создания нового процесса, текущее состояние генератора случайных чисел (включая seed) копируется в дочерний процесс. Это может приББиблиотека Python разработчика | Книги по питонуСкажем, вы хотите получить первые N элементов итерируемого объекта. Прямолинейный способ — использовать islice: from itertools import islice def fib(): a, b = 0
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 943подписчиков725средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем