Сортировка, когда значения равны None или пустые строки python

У меня есть список со словарями, в котором я сортирую их по разным значениям. Я делаю это с этими строками кода:

def orderBy(self, col, dir, objlist): if dir == 'asc': sorted_objects = sorted(objlist, key=lambda k: k[col]) else: sorted_objects = sorted(objlist, key=lambda k: k[col], reverse=True) return sorted_objects 

Теперь проблема в том, что я иногда имею нулевые значения или пустые строки при попытке сортировки, а затем все это ломается.

Я не уверен, но я думаю, что это исключение, которое вызывается: unorderable types: NoneType () <NoneType (). Это происходит, когда в столбце, который я пытаюсь сортировать, нет значений None. Для пустых значений строки он работает, хотя они заканчиваются первым в списке, но я бы хотел, чтобы они были последними.

Как я могу решить эту проблему?

One Solution collect form web for “Сортировка, когда значения равны None или пустые строки python”

Если вы хотите, чтобы значения « None и '' отображались последними, вы можете вернуть свою key функцию кортежем, поэтому список сортируется по естественному порядку этого кортежа. Кортеж имеет форму (is_none, is_empty, value) ; таким образом, кортеж для значения None будет (1, 0, None) , для '' is (0, 1, '') и для чего-либо еще (0, 0, "anything else") . Таким образом, сначала будут отсортированы правильные строки, затем пустые строки и, наконец, None .

Пример:

 >>> list_with_none = [(1,"foo"), (2,"bar"), (3,""), (4,None), (5,"blub")] >>> col = 1 >>> sorted(list_with_none, key=lambda k: (k[col] is None, k[col] == "", k[col])) [(2, 'bar'), (5, 'blub'), (1, 'foo'), (3, ''), (4, None)] 
  • Ротация списка Python
  • Пользовательский порядок сортировки списка
  • Как сделать копию списка объектов, которые не изменяются при изменении исходного списка?
  • как безопасно удалять элементы из списка в Python
  • Самый быстрый способ удалить дубликаты в списках Python
  • Цикл Python в
  • Python - самый быстрый способ проверить, содержит ли строка определенные символы в любом из элементов списка
  • python - Можно ли создать список «def»?
  •  
    Interesting Posts for Van-Lav

    SQLAlchemy: повторное сохранение уникального поля модели после попытки сохранить неединственное значение

    как сделать «клин для удаления клина» и «создать клин для ножа» с помощью PyChef?

    Рекомендуемый криптографический модуль Python?

    Как правильно писать пути к файлу в Python

    Чрезвычайно длительное время ожидания при загрузке ресурса REST из angularjs

    Python разделяет строки и смешивает средние

    Не удалось восстановить rebales_index elasticsearch с помощью Haystack Django: «Соединение отказано»

    Использование многопроцессорности в классе

    Очистите только текст, внутри элемента html, который имеет класс, используя красивый суп

    Лучший способ объединить вероятностные классификаторы в scikit-learn

    Есть ли разница между установкой «brew install» и «pip install»?

    Пользовательское окно Tkinter

    Более быстрый способ удаления неиспользуемых категорий в пандах?

    Отсутствует libmmal.so с библиотекой picamera

    регулярно просматривать другие компьютеры в сети в Python

    Python - лучший язык программирования в мире.