我有一个循环,它通过从api获取的字典,但是当到达一个不存在的键时,它向我显示以下错误:
Traceback (most recent call last):
File "C: \ git_work \ reports_rhev \ reports_rhev \ Reporte_RHV_vM_v1.0.py", line 25, in <module>
version = data.get (element ['guest_operating_system'] ['version'] ['full_version'])
KeyError: 'guest_operating_system'
在这种情况下,如何处理keyrerror,在这种情况下如何应用get方法
URL = https://api/ovirt-engine/api/vms
data = requests.get(URL, verify=False, auth = HTTPBasicAuth('admin@internal','password'), headers={'Accept': 'application/json'}) #Configuración de URL
data = data.json() #Convertimos la respuesta a un diccionario de datos
#print(type(data))
## Recorrer con todos los elemento dentro del diccionario de datos y obtener la información de las vMS
for elemento in data['vm']: #Recorrer el elemento host dentro de la variable data
name_vm = elemento['name']
descripcion = elemento['description']
version = elemento['guest_operating_system']['version']['full_version']
print(f"vM: {name_vm}\nDescripción: {descripcion}")
尝试这样做,但不起作用:
for elemento in data['vm']: #Recorrer el elemento host dentro de la variable data
name_vm = elemento['name']
descripcion = elemento['description']
if elemento['guest_operating_system'] in data['vm']:
version = elemento['guest_operating_system']['version']['full_version']
else:
version = "Dato no disponible"
print(f"vM: {name_vm}\nDescripción: {descripcion}\nVersión: {version}")
您可以使用以下选项之一
'key' in dict
.get('key', default)
,或排除默认参数以返回None
而不出错但是,不能对None或非dict结果调用
.get()
,因此最好不要将它们链接起来每种方法的示例
相关问题 更多 >
编程相关推荐