在数据库中我们由于这样或者那样的原因会在数据项中留下NULL值。这导致使用sorted函数对数据项排序时有None值混入,使系统报错。
如这样的列表:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'C’, None)]
使用sorted按第三列排序时,总是报错。
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'C', None)]
>>> b=sorted(students, key=lambda s: s[2], reverse=True)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
b=sorted(students, key=lambda s: s[2], reverse=True)
TypeError: '<' not supported between instances of int and 'NoneType'
这样的话,我们只需要改造None值,就可以正常排序了。如下面:
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'C', None)]
>>> b=sorted(students, key=lambda s: s[2] or 0, reverse=True)
>>> b
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'C', None)]
Ok了。