Python 为什么没有';当密钥不存在时,我不会得到密钥错误吗?
在下面的测试数据中,我试图将键“x”值附加到列表ls中。我的问题是为什么在循环遍历第一行数据时没有得到一个KeyError。显然,第一行不包含键“x”。最初我认为我必须使用Try/Except来避免在循环数据时出错,但似乎Try/Except是不必要的 有人能帮我理解为什么这里不生成keyrerror吗Python 为什么没有';当密钥不存在时,我不会得到密钥错误吗?,python,keyerror,Python,Keyerror,在下面的测试数据中,我试图将键“x”值附加到列表ls中。我的问题是为什么在循环遍历第一行数据时没有得到一个KeyError。显然,第一行不包含键“x”。最初我认为我必须使用Try/Except来避免在循环数据时出错,但似乎Try/Except是不必要的 有人能帮我理解为什么这里不生成keyrerror吗 data = [{u'xyz': []}, {u'xyz': [{u'x' : 2, u'y' : 3,
data = [{u'xyz': []},
{u'xyz': [{u'x' : 2,
u'y' : 3,
u'z' : 4}]}]
ls = []
for item in data:
ddd = item['xyz']
print ddd
for d in ddd:
ls.append(d['x'])
ls
输出:
[]
[{u'y': 3, u'x': 2, u'z': 4}]
[2]
无内容上的循环不会运行: []中项目的
>:
... 打印项目
...
>>>
所以
data=[{u'xyz':[]},
... ]
#第一次通过
对于数据中的项目:
ddd=项目['xyz']
#ddd是一个空列表
对于ddd中的d:
#这不会运行,因此没有KeyError
ls.append(d['x'])
如果要捕获关键错误,则需要Try/Except;如果要避免关键错误,则可以执行以下操作之一:
如果d中的'x':#测试'x'是否是d中的键
或
d、 get('x')#返回值,或无
第一行是一个空列表,没有键错误,因为其中没有字典。因此,循环:
for d in ddd:
未输入。尝试将第一行更改为:
data = [{u'xyz': [{}]},
您将看到预期的keyrerror