2013-04-03 7 views
36

Ho un oggetto json molto lungo e complicato ma voglio solo ottenere gli elementi/chiavi nel primo livello!python JSON ottiene solo le chiavi nel primo livello

Esempio:

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

voglio ottenere 1,3,8 come risultato!

ho trovato questo codice:

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

ma stampa tutti i tasti (anche 12 e 25)

+3

No, non è così. Stampa le chiavi e i valori che includono essi stessi i sottodiretti. Se si desidera stampare solo i tasti, non stampare il valore. –

+0

possibile duplicato di [Python: come stampare la chiave di un dizionario?] (Http://stackoverflow.com/questions/5904969/python-how-to-print-a-dictionarys-key) –

+1

Ma non voglio il sottodictionary chiavi ... So che potrei ommit il ", valore" questo era solo per scopo di debug – TeNNoX

risposta

64

Basta fare una semplice .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 
>>> 

Se avete bisogno di un ordine impostato lista:

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

Works, grazie :) – TeNNoX

12
for key in data.keys(): 
    print key 
0

Un buon modo per verificare se un oggetto python è un'istanza di un tipo è utilizzare isinstance() che è una funzione 'built-in'.

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