2016-04-24 6 views
1

文字列形式の日付のリストをソートしようとしていますが、次のようにそれぞれ異なる形式です:Python 3 - 文字列形式の日付リストを別の形式で並べ替える

lst = ['11/04/2016, 23:55', '15/11/2014', '04/05/2016, 23:55', '24/11/2013, 12:30', '31/12/2015'] 

私は、次のソートしようとしました:私は、私が捕まってしまったの日付が(特定の時間の有無にかかわらず)になるのか分からないので、

lst.sort(key=lambda date: datetime.strptime(date, "%d/%m/%Y, %H:%M")) 

をしかし..私は考えることができませんでしたがこのリストをソートするための一般的な条件であり、与えられていれば正確な時刻を保持する必要があります(つまり、文字列を分割して、 ,の前に)。

あなたのキー機能にif-elseステートメントを使用することができます:(

答えて

2

助けてください:

>>> lst.sort(key=lambda d: datetime.strptime(d, "%d/%m/%Y, %H:%M") if ':' in d else datetime.strptime(d, "%d/%m/%Y")) 
>>> lst 
['24/11/2013, 12:30', '15/11/2014', '31/12/2015', '11/04/2016, 23:55', '04/05/2016, 23:55'] 
>>> 

あなたは2日付形式を使用すると、非インであなたの複数の状態を扱うことができるより多くを持っている可能性がある場合をライン機能。

def key_func(dat): 
    if ':' in dat: 
     return datetime.strptime(d, "%d/%m/%Y, %H:%M") 
    elif cond2: 
     # return val2 
    elif cond3: 
     # return val3 
+1

はどうもありがとうございました!! 私はあなたがラムダ関数に条件を追加することができます知らなかった、それは私が必要なものだけでした。ありがとうございます! – user3765713

関連する問題