2011-10-13 39 views
0

你好Python專家,在Python中爲變量分配「A或B」的最短途徑?

我想知道如果「A」爲真(即存在)和如果不是「A」爲變量賦值爲「A」

假設我有:

mydict = {'a': 'apple', 'b': 'banana', 'c': 'Cherry'} 

然後,按照我的理解,分配一個值的最短(當然,一個線)的方式,不存在如本mydict VAR的關鍵是:

myvar = mydict['m'] if 'm' in mydict else 'Melon' 

但是有沒有更簡單的方法呢?

在Ruby中,我會是這樣的:

myvar = mydict[:m] || 'Melon' 

只是想知道。提前致謝!

+0

在Ruby'mydict [:米]'想必返回Python的'None'的等價物。那麼你如何在Python字典中存儲'None'? –

+0

Ruby版本似乎不會做同樣的事情。字典查找結果爲「真」(即,滿足if-test)與字典中存在的值不同。如果值存在但是「false」('None','False',一個空列表等等是Python中的false-ish值;可能Ruby是相似的),則查找將是「假」。 –

+0

@Karl Knechter:Ruby中只有'false'和'nil'是錯誤的。空數組或字符串,零 - 全部在if語句中返回true。 (Python的'None'就像Ruby的'nil'。) – steenslag

回答

5

在這種特殊情況下(從字典獲取項目),有一個可用的快捷方式 - get方法,它允許默認值。

myvar = mydict.get('m', 'Melon') 
+0

翻譯回Ruby,那就是'myvar = mydict.fetch('m','Melon')' – steenslag

+0

哦,這更像我想做的!非常感謝你! – Sacki

4

我會考慮使用get()方法是在if/else版本有所改進。

myvar = mydict.get('m', 'melon') 
相關問題