97 votes

python JSON ne récupère que les clés du premier niveau

J'ai un objet json très long et compliqué mais je ne veux obtenir que les éléments/clés du premier niveau !

Ejemplo:

{
    "1": "a", 
    "3": "b", 
    "8": {
        "12": "c", 
        "25": "d"
    }
}

Je veux obtenir 1,3,8 comme résultat !

J'ai trouvé ce code :

for key, value in data.iteritems():
    print key, value

Mais il imprime toutes les clés (également 12 et 25 )

158voto

karthikr Points 36157

Il suffit de faire un simple .keys()

>>> dct = {
...     "1": "a", 
...     "3": "b", 
...     "8": {
...         "12": "c", 
...         "25": "d"
...     }
... }
>>> 
>>> dct.keys()
['1', '8', '3']
>>> for key in dct.keys(): print key
...
1
8
3
>>>

Si vous avez besoin d'une liste triée :

keylist = dct.keys()
keylist.sort()

22voto

Joe Frambach Points 13853
for key in data.keys():
    print key

5voto

Praveen3530 Points 30

Comme Karthik l'a mentionné, dct.keys() fonctionnera mais il retournera toutes les clés dans dict_keys type pas dans list type. Ainsi, si vous voulez toutes les clés d'une liste, alors list(dct.keys()) fonctionnera.

3voto

Hafizur Rahman Points 379

Une bonne façon de vérifier si un objet python est une instance d'un type est d'utiliser isinstance() qui est la fonction "intégrée" de Python. Pour Python 3.6 :

dct = {
       "1": "a", 
       "3": "b", 
       "8": {
            "12": "c", 
            "25": "d"
           }
      }

for key in dct.keys():
    if isinstance(dct[key], dict)== False:
       print(key, dct[key])
#shows:
# 1 a
# 3 b

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X