我有以下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/

10-11 16:13