【发布时间】:2014-06-17 19:21:01
【问题描述】:
如果entries 不存在于mydict 中,我是否可以在一行中编写以下内容而不会导致KeyError?
b = [i for i in mydict['entries'] if mydict['entries']]
【问题讨论】:
标签: python dictionary list-comprehension
如果entries 不存在于mydict 中,我是否可以在一行中编写以下内容而不会导致KeyError?
b = [i for i in mydict['entries'] if mydict['entries']]
【问题讨论】:
标签: python dictionary list-comprehension
如果缺少密钥,您可以使用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'}
>>>
【讨论】: