0

ラムダは私を少し混乱させています。これが私が持っているものです:

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f")

このような関数を書くと:

def time(d):
    t = datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f")
    return t.strftime("%d-%b-%Y-%H")

できreturn t.strftime("%d-%b-%Y-%H")ます。

t.strftime("%d-%b-%Y-%H")ラムダステートメントのようなものを埋め込むことはできますか?

編集

私はこれを試しました:

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f").strftime("%d-%b-%Y-%H")

しかし、それは返します:

AttributeError: 'str' オブジェクトに属性 'strftime' がありません

関数を使用すると発生しません..

4

2 に答える 2

3

はい、次のようにできます。

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f").strftime("%d-%b-%Y-%H")

これを Python 2.7 でテストしました。

>>> lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f").strftime("%d-%b-%Y-%H")
>>> lmb({"Date[G]": "22-Apr-2012", "Time[G]": "07:23:24.123"})
'22-Apr-2012-07'
于 2012-05-01T03:16:45.673 に答える
3

もちろん:

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-`%H:%M:%S.%f").strftime("%d-%b-%Y-%H")

しかし、関数を使用することはすぐに理にかなっています。

于 2012-05-01T03:16:55.750 に答える