¿Cómo acceder a valores dentro de una lista de Python?

CorePress2024-01-25  9

Estoy intentando obtener las definiciones de ciertas palabras usando este código:

import requests

url = requests.get("https://api.dictionaryapi.dev/api/v2/entries/en_US/fish")

a = url.text()

print(a)

El enlace en el fragmento de código anterior devuelve algunos valores como este:

[{"word":"fish","phonetics":[{"text":"/fɪʃ/","audio":"https://lex-audio.useremarkable.com/mp3/fish_us_1.mp3"}],"meanings":[{"partOfSpeech":"noun","definitions":[{"definition":"A limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.","example":"the sea is thick with fish"}]},{"partOfSpeech":"intransitive verb","definitions":[{"definition":"Catch or try to catch fish, typically by using a net or hook and line.","synonyms":["go fishing","angle","cast","trawl"],"example":"he was fishing for bluefish"}]}]},{"word":"fish","phonetics":[{"text":"/fɪʃ/","audio":"https://lex-audio.useremarkable.com/mp3/fish_us_1.mp3"}],"meanings":[{"partOfSpeech":"transitive verb","definitions":[{"definition":"Mend or strengthen (a beam, joint, mast, etc.) with a fish."}]},{"partOfSpeech":"noun","definitions":[{"definition":"A flat plate of metal, wood, or another material that is fixed on a beam or across a joint in order to give additional strength, especially on a ship's damaged mast or spar as a temporary repair."}]}]}]

Ahora quiero obtener la primera definición del resultado anterior. ¿Cómo lo consigo?

¿Cuáles son sus parámetros de búsqueda?

- Nick

28 de marzo de 2021 a las 5:39

¿Quieres obtener todas las definiciones o sólo la primera?

Marcos

28 de marzo de 2021 a las 5:41

@deadshot: una lista de dictados es una lista.

Usuario2357112

28 de marzo de 2021 a las 5:42

" ¿Hay alguna forma de buscar valores específicos en todo el diccionario a la vez? de ninguna manera

- tiro muerto

28 de marzo de 2021 a las 5:42

solo el primero

Murkut23

28 de marzo de 2021 a las 5:43



------------------------------------

Los documentos JSON complejos y las consultas a dichos documentos plantean un problema similar al de la manipulación de documentos XML; Se puede utilizar un conjunto personalizado de listas por comprensión y funciones de utilidad, pero se debe utilizar una herramienta especializada.

Para manipular documentos JSON en Python, puedes echar un vistazo a jsonpath_ng:

Los elementos que desea extraer se definen mediante una expresión JSONPath.sion, el equivalente de XPath de XML Simplemente agregue/actualice su(s) expresión(es) JSONPath para extraer más elementos/nuevos

En el siguiente ejemplo, las expresiones JSONPath definidas en QUERIES se ejecutan una por una en su documento JSON:

import requests
import jsonpath_ng
import json


URL = 'https://api.dictionaryapi.dev/api/v2/entries/en_US/fish'
QUERIES = {
    'First kind, first meaning, first definition': jsonpath_ng.parse('[0].meanings[0].definitions[0].definition'),
    'All kind, first definitions': jsonpath_ng.parse('[*].meanings[0].definitions[0].definition'),
    'All definitions': jsonpath_ng.parse('[*].meanings[*].definitions[*].definition')
}


if __name__ == '__main__':
    jsdata = requests.get(URL).json()
    for name, query in QUERIES.items():
        print(f'--- {name} ---')
        for match in query.find(jsdata):
            print(json.dumps(match.value, indent=2))
        print()



------------------------------------

prueba esto.

s = [...]
for i in s:
    print(i['word'],[ k['definition'] for j in i['meanings'] for k in j['definitions']])

2

Esto devuelve todas las definiciones. quierot para obtener exactamente esto: ['Un animal vertebrado de sangre fría, sin extremidades, con branquias y aletas y que vive completamente en el agua.', 'Pescar o intentar pescar, generalmente usando una red o anzuelo y sedal.'], que es la primera definición.

Murkut23

28 de marzo de 2021 a las 6:02

¿Te gusta esto? ` print(s[0]['palabra'],[ k['definición'] para j en s[0]['significados'] para k en j['definiciones']])`

- e_yi

28 de marzo de 2021 a las 9:07

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare