Lambda让我感到困惑,这就是我所拥有的:
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")
。
我可以在我的lambda语句中嵌入像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'
使用函数不会发生..
答案 0 :(得分: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'
答案 1 :(得分: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")
但使用函数很快就会有意义。