我需要將兩個函數轉換為同一個函數的lambda版本,我將發布代碼和我的嘗試,但這些都不起作用。這是在Python和映射對中使用字典,然后減少它們。對于實際分配,我計算賠率/偶數,它們被映射為1或0,但這里我只使用隨機數。我相信沒有錯誤,這是最小的可復制代碼。謝謝你的幫助!
我試圖把一行改成:mapping = lambda v,k: [(key,val) for key in evenOddDict.items()]
因為它不識別key/val。我不確定這里是否需要為字典做一些特殊的事情。
#mapping function without lambda
#def mapping(key,val):
# reverse = (val,key)
# return reverse
#mapping function with lambda
mapping = lambda v,k: [(key,val) for entry in dummydata.items()]
#mapReduce function without lambda
#def mapReduce(key,val):
# if key not in final_output:
# final_output[key] = []
# final_output[key].append(val)
#mapReduce function with lambda
mapReduce = lambda k,v:final_output[k] + v
dummydata = {11:1, 36:0, 53:1, 77:0, 95:1, 22:0, 40:1, 63:0, 85:1, 17:0}
map_output = []
for k,v in dummydata.items():
tmp = mapping(k,v)
map_output.append(tmp)
for k, v in map_output:
mapReduce(k,v)
print("\n\n====================================================")
print(" After mapReduce and Final Output")
print("====================================================\n\n")
for i in range (len(map_output)):
print(map_output[i])
print("\n\n")
for key in final_output:
print (key,final_output[key])
print("\n\n")
這是沒有lambdas的兩個函數的等效版本。
我順便提一下,命名lambdas顯然有些令人沮喪,根據政治公眾人物8:
如果除了任務的要求之外還有其他原因,那么分享一下也很有趣,因為大家一致認為命名lambdas對正常函數沒有好處(還有一些缺點,比如調試的回溯)。