2013-04-03 16 views
36

Çok uzun ve karmaşık bir json nesnesine sahibim, ancak sadece öğeleri/anahtarları birinci seviyede almak istiyorum!python JSON sadece birinci kademe anahtarları al

Örnek:

Ben sonuç olarak 1,3,8 almak istiyorum
{ 
    "1": "a", 
    "3": "b", 
    "8": { 
     "12": "c", 
     "25": "d" 
    } 
} 

!

Bu kodu bulundu:

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

Ama (ayrıca 12 ve 25) bütün anahtarları bir sıralanmış gerekiyorsa

+3

Hayır, öyle değil. Anahtarları ve alt sözlükleri içeren değerleri yazdırır. Sadece tuşları yazdırmak istiyorsanız, değeri yazdırmayın. –

+0

olası bir kopyası [Python: bir sözlükin anahtarı nasıl yazdırılır?] (Http://stackoverflow.com/questions/5904969/python-how-to-print-a-dictionarys-key) –

+1

Ama ben altdisek istemiyorum anahtarlar ... Ben biliyorum ", değer" bu sadece hata ayıklama amacıyla sadece – TeNNoX

cevap

64

Sadece basit .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 
>>> 

yapmak yazdırır liste:

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

Works, teşekkürler :) – TeNNoX

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

Bir python nesnesinin bir türün örneği olup olmadığını kontrol etmenin iyi bir yolu, 'yerleşik' bir işlev olan isinstance() kullanmaktır.

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