簡體   English   中英

Python:檢查列表推導中的KeyError?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM