Llamo a una API a través de Python y devuelvo este código como respuesta:
{ "cast": [ { "character": "Power", "name": "George" }, { "character": "Max", "job": "Sound", "name": "Jash" }, { "character": "Miranda North", "job": "Writer", "name": "Rebecca" } ] }Estoy tratando de obtener el valor de Rebecca porque necesito obtener el escritor. Así que escribí:
for person in cast # cast is the variable keeps whole code above NOT inside the dict: if person["job"] == "Writer": writer = person["name"]pero me da:
KeyError at search/15 u'job'como puedo sacar el valor
CÓDIGO COMPLETO:
writer = "" for person in api['cast']: if person.get('job') == 'Writer': writer = person.get('name') return render(request, 'home.html', { 'writer': writer })casa.html:
<p>{{writer}}</p>Esto se debe a que no todos los elementos de la lista tienen la clave de job .
Cambiar a:
for person in cast #whole code above: if person.get('job') == 'Writer': writer = person.get('name')Un trazador de líneas para encontrar un escritor.
writer = next((person for person in api['cast'] if person.get('job') == 'Writer'), None)Una línea para encontrar a todos los escritores.
writers = [person for person in api['cast'] if person.get('job') == 'Writer']Syntax for dictionary get() method: dict.get(key, default=None) Parameters key: This is the Key to be searched in the dictionary. default: This is the Value to be returned in case key does not exist. Debe especificar el valor predeterminado para get en caso de que la key no exista.
>>> for person in api['cast']: ... if person.get('job', '') == 'Writer': ... writer = person.get('name')