2013-04-30 84 views
0

我想要使用lambda或其他python特性來返回字典,如果條件滿足,或者沒有,則返回none。根據條件返回字典

myDict = None 

myDict = lambda c: {} if not myDict else myDict 

顯然,這不行,因爲不執行拉姆達,所以這將是最「Python化」的方式來做到這一點?

+0

空字典是'FALSE'。 – eumiro 2013-04-30 13:35:27

+0

是的,但我想更新我的字典後,我的意思是myDic.update() – Agus 2013-04-30 13:36:36

+0

第一行後,myDict是None,第二行後它是一個lambda函數。它從來不是一本字典。 – eumiro 2013-04-30 13:37:14

回答

0
myDict = None 
get_myDict = lambda: myDict or {} 

get_myDict() 

返回一個空字典。

+1

我認爲條件表達式可能首選邏輯'或'這些天。 (它對初學者來說表現得更加自然一些) – mgilson 2013-04-30 13:39:54

4

在我看來,你應該只使用條件表達式:

myDict = {} if not myDict else myDict 

lambda是創造功能的一種方式。所以:

func = lambda x: x*x 

是大致相同:

def func(x): 
    return x*x 

所以,在你的榜樣,您創建一個功能或多或少等同於:

def myDict(c): 
    return {} if not myDict else myDict 
0

您也可以使用locals().get('myDict', None)(或globals().get取決於你的範圍)