我有以下python代码,用于对列表排序功能(例如date_list.sort(cmp=dcmp)
)进行日期比较。我想知道是否有可能删除cmp / if测试并使其成为一个单行。
def dcmp(a, b):
amm, add, ayy = [int(v) for v in a.split('/')]
bmm, bdd, byy = [int(v) for v in b.split('/')]
v = cmp(ayy, byy)
if v != 0: return v
v = cmp(amm, bmm)
if v != 0: return v
return cmp(add, bdd)
更新:让我明确地说,我好奇的是您是否可以从函数中删除以下代码块:
v = cmp(ayy, byy)
if v != 0: return v
v = cmp(amm, bmm)
if v != 0: return v
return cmp(add, bdd)
最佳答案
您可以使用key
代替cmp
。编写key
函数要容易得多,并且可以一行完成。
date_list.sort(key = lambda s: datetime.strptime(s, '%m/%d/%Y'))
您还将需要此导入:
from datetime import datetime
关于python - 简化日期比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7921917/