如果你想要None
and ''
值出现在最后,你可以有你的key
函数返回一个元组,因此列表按该元组的自然顺序排序。元组的形式为(is_none, is_empty, value)
;这样,a的元组None
值将是(1, 0, None)
, for ''
is (0, 1, '')
以及其他任何事情(0, 0, "anything else")
。因此,这将首先对正确的字符串进行排序,然后对空字符串进行排序,最后对None
.
Example:
>>> 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)]