Использование функции key=
определенно правильно, вам просто нужно решить, как вы хотите обрабатывать значения None
- выберите значение datetime
, которое вы хотите рассматривать как эквивалент None
для сортировки цели. E.g.:
import datetime
mindate = datetime.date(datetime.MINYEAR, 1, 1)
def getaccountingdate(x):
return x['accountingdate'] or mindate
results = sorted(results, key=getaccountingdate, reverse=True)
Просто посмотрите, насколько это проще, чем определить cmp
функцию вместо этого - и если вы проведете некоторый сравнительный анализ, вы обнаружите, что это также значительно быстрее! Нет никакого преимущества в использовании cmp
функции вместо этой key
функции, и это было бы плохим выбором для дизайна.