Código Python:

import json
aaa='''
{
    "eee":"yes",
    "something": null,
    "ok": ["no","mmm","eee"],
    "please":false,
    "no": {"f":true,"h":"ttt"}
}
'''
data=json.loads(aaa)

Cuando lo hago:

print(len(data))

Obtengo como se esperaba:

5

Y

print(len(data['ok']))

Que da

3

Pero de alguna manera

print(data[0])

Da

Traceback (most recent call last):
  File "file.py", line 34, in <module>
    print(data[0])
KeyError: 0

¿Cómo obtengo un término dentro de este objeto JSON usando su índice?

2
David Fígols Olaria 15 ene. 2021 a las 01:00

3 respuestas

La mejor respuesta

Preguntó acerca de acceder a una posición en un JSON , pero la estructura data es python dict, con la clave y los valores, puede indexarla solo usando sus claves como lo hizo bien con data['ok'].

Para obtener la primera clave, primero puede obtener dict.items(), que es una lista de los pares key/value, y luego, como es un list, puede indexar con ints

data.items()
# [('eee', 'yes'), ('something', None), ('ok', ['no', 'mmm', 'eee']), ('please', False), ('no', {'f': True, 'h': 'ttt'})]


items = list(data.items())
items[0]
# ('eee', 'yes')
1
azro 14 ene. 2021 a las 22:08

Los diccionarios de Python están desordenados. Significa que no puede acceder al elemento del diccionario según su valor de índice. Debe proporcionar la clave para acceder al valor o valores correspondientes.

1
Surya1101 14 ene. 2021 a las 22:19

¿Es esto lo que estás buscando?

Puede obtener el término dentro de JSON especificando el valor Key de los datos. Aquí, eee es el Key:

print((data['eee']))

Que imprimirá:

yes

De forma similar, puede utilizar otros Key para obtener sus valores respectivos.

Los datos de JSON tienen el formato Key:Value

0
floss 14 ene. 2021 a las 22:56
65727499