如果entries
中不存在mydict
,我是否可以在一行中编写以下内容而不会导致KeyError?
b = [i for i in mydict['entries'] if mydict['entries']]
答案 0 :(得分:5)
如果密钥丢失,您可以使用dict.get()
默认为空列表:
b = [i for i in mydict.get('entries', [])]
在您的版本中,if
过滤器仅适用于每次迭代,就像您在if
循环下嵌套for
语句一样:
for i in mydict['entries']:
if mydict['entries']:
如果entries
抛出KeyError
,就没用了。
答案 1 :(得分:2)
您可以尝试以下代码:
b = [i for i in mydict.get('entries', [])]
答案 2 :(得分:1)
你想要这样的东西:
b = [i for i in mydict.get('entries', [])]
答案 3 :(得分:0)
还有另一种方法,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'}
>>>