我很难想出一个巧妙的方法来处理这种情况。我有从数据库读取回来的数据。我想按会计日期排序。然而,accoutingdate 有时可能为空。我目前正在做以下事情:
results = sorted(results, key=operator.itemgetter('accountingdate'), reverse=True)
但是,由于某些 accoutingdates 为空,因此会出现“TypeError:无法将 datetime.date 与 NoneType 进行比较”的炸弹。
处理这个问题的“最正确”或“最 Pythonic”方法是什么?
Using a key=
功能肯定是正确的,你只需要决定你想如何对待None
价值观——选择一个datetime
您想要将其视为等价的值None
用于排序目的。例如。:
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
function 相反 - 如果你做一些基准测试,你会发现它也明显更快!使用a根本没有任何好处cmp
函数而不是这个key
函数,这样做将是一个糟糕的设计选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)