【发布时间】:2015-09-07 16:17:20
【问题描述】:
我有一个包含字典的列表,我在其中按不同的值对它们进行排序。我正在使用这些代码行:
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
现在的问题是,当我尝试排序时偶尔会出现空值或空字符串,然后一切都崩溃了。
我不确定,但我认为这是引发的异常:不可排序的类型:NoneType()
我该如何解决这个问题?
【问题讨论】:
-
究竟是如何分解的?
-
旁注:当你可以在这里使用
sorted(..., reverse=dir != 'asc')时,不要使用if..else。 -
您需要在这里给我们一些示例数据;向我们展示这会发生什么,以及你期望会发生什么。
-
这是来自 DataTables pluin 的 ajax 调用的一部分,所以我得到一个错误,它没有取回正确的数据。我现在要尝试一些调试来获取一些数据。
-
我不确定,但我认为这是引发的异常:
unorderable types: NoneType() < NoneType()。当我尝试排序的列上没有任何值时,就会发生这种情况。对于空字符串值,尽管它们最终在列表中排在第一位,但我希望它们排在最后。