2013-04-03 12 views
36

Mam bardzo długi i skomplikowany obiekt json, ale chcę tylko dostać przedmioty/klucze na pierwszym poziomie!python JSON tylko klucze na pierwszym poziomie

Przykład:

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

Chcę dostać 1,3,8 w wyniku!

znalazłem ten kod:

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

Ale drukuje wszystkie klawisze (także 12 i 25)

+3

Nie, nie ma. Drukuje klucze i wartości, które same zawierają podkatalogi. Jeśli chcesz wydrukować tylko klucze, nie drukuj wartości. –

+0

możliwy duplikat [Python: jak wydrukować klucz słownika?] (Http://stackoverflow.com/questions/5904969/python-how-to-print-a-dictionarys-key) –

+1

Ale nie chcę subdictionary klucze ... Wiem, że mogłem ommit "wartość" to tylko do celów debugowania – TeNNoX

Odpowiedz

64

Wystarczy zrobić proste .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 
>>> 

Jeśli potrzebujesz klasyfikowane lista:

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

Działa, dzięki :) – TeNNoX

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

Dobrym sposobem sprawdzenia, czy obiekt Pythona jest instancją typu, jest użycie isinstance(), która jest funkcją "wbudowaną".

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