在 python 中动态访问列表项
Accessing list item dynamically in python
我有一个列表(名为 Responses
),其中包含一些具有以下键值对的字典:
Responses = [
{'Id':100,'ResponseText1':'aaaa','ResponseText2':'yyyy'},
{'Id':101,'ResponseText1':'bbbb','ResponseText2': 'zzzz'},
{'Id':103,'ResponseText1':'cccc'},
{'Id':104,'ResponseText2': True},
]
如您所见,Id
是所有 dictionary
的公共字段,但 ResponseText1
和 ResponseText2
对某些 dictionary
不可用。
我想分离并检测所有数据以将它们推送到我的数据库中。我的 python
代码:
for j in Responses:
print(j['Id'])
if j['ResponseText1']:
print(j['ResponseText1'])
else:
print("No ResponseText1 is present")
if j['ResponseText2']:
print(j['ResponseText2'])
else:
print("No ResponseText2 is present")
但它显示如下错误:
Traceback (most recent call last):
File "<string>", line 14, in <module>
KeyError: 'ResponseText2'
请建议我该如何解决这个问题?
使用in
或.get('key', default)
,而不是['key']
访问以防止KeyErrors
两者的例子
for j in Responses:
print(j['Id'])
text1 = j.get('ResponseText1')
if text1 is not None:
print(text1)
else:
print("No ResponseText1 is present")
if 'ResponseText2' in j:
print(j['ResponseText2'])
else:
print("No ResponseText2 is present")
我有一个列表(名为 Responses
),其中包含一些具有以下键值对的字典:
Responses = [
{'Id':100,'ResponseText1':'aaaa','ResponseText2':'yyyy'},
{'Id':101,'ResponseText1':'bbbb','ResponseText2': 'zzzz'},
{'Id':103,'ResponseText1':'cccc'},
{'Id':104,'ResponseText2': True},
]
如您所见,Id
是所有 dictionary
的公共字段,但 ResponseText1
和 ResponseText2
对某些 dictionary
不可用。
我想分离并检测所有数据以将它们推送到我的数据库中。我的 python
代码:
for j in Responses:
print(j['Id'])
if j['ResponseText1']:
print(j['ResponseText1'])
else:
print("No ResponseText1 is present")
if j['ResponseText2']:
print(j['ResponseText2'])
else:
print("No ResponseText2 is present")
但它显示如下错误:
Traceback (most recent call last):
File "<string>", line 14, in <module>
KeyError: 'ResponseText2'
请建议我该如何解决这个问题?
使用in
或.get('key', default)
,而不是['key']
访问以防止KeyErrors
两者的例子
for j in Responses:
print(j['Id'])
text1 = j.get('ResponseText1')
if text1 is not None:
print(text1)
else:
print("No ResponseText1 is present")
if 'ResponseText2' in j:
print(j['ResponseText2'])
else:
print("No ResponseText2 is present")