2013-04-03 38 views
36

Tôi có một đối tượng json rất dài và phức tạp nhưng tôi chỉ muốn lấy các mục/khóa ở cấp độ đầu tiên!python JSON chỉ nhận được khóa ở cấp độ đầu tiên

Ví dụ:

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

Tôi muốn nhận 1,3,8 kết quả!

tôi tìm thấy mã này:

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

Nhưng nó in tất cả các phím (cũng 12 và 25)

+3

Không, không. Nó in các phím, và các giá trị tự bao gồm các từ điển phụ. Nếu bạn chỉ muốn in các phím, không in giá trị. –

+0

bản sao có thể có của [Python: cách in khoá của từ điển?] (Http://stackoverflow.com/questions/5904969/python-how-to-print-a-dictionarys-key) –

+1

Nhưng tôi không muốn từ điển phụ phím ... Tôi biết tôi có thể ommit ", giá trị" này chỉ là cho mục đích gỡ lỗi – TeNNoX

Trả lời

64

Chỉ cần làm một đơn giản .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 
>>> 

Nếu bạn cần một sắp xếp danh sách:

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

Hoạt động, cảm ơn :) – TeNNoX

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

Một cách hay để kiểm tra xem một đối tượng python là một thể hiện của một loại là sử dụng isinstance() là một chức năng 'được tích hợp sẵn'.

for key in dct.keys(): 
    if isinstance(dct[key], dict)== False: 
     print(key, dct[key]) 
#shows: 
# 1 a 
# 3 b 
Các vấn đề liên quan