[英]Python: check for a KeyError in a list comprehension?
有沒有辦法,如果mydict
沒有entries
,我可以在一行中編寫以下內容而不會導致mydict
?
b = [i for i in mydict['entries'] if mydict['entries']]
如果密鑰丟失,您可以使用dict.get()
默認為空列表:
b = [i for i in mydict.get('entries', [])]
在您的版本中, if
過濾器僅適用於每次迭代,就像在for
循環下嵌套if
語句一樣:
for i in mydict['entries']:
if mydict['entries']:
如果entries
拋出KeyError
,則沒有多大用處。
你可以試試這段代碼:
b = [i for i in mydict.get('entries', [])]
你想要的東西:
b = [i for i in mydict.get('entries', [])]
有另一種方法可以做到這一點, Dict.setdefault
。
>>> d = {}
>>> import time
>>> time.ctime(
... )
'Thu May 1 18:11:53 2014'
>>> d = {}
>>> a = d.setdefault('time',time.ctime())
>>> a
'Thu May 1 18:12:17 2014'
>>> d
{'time': 'Thu May 1 18:12:17 2014'}
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.