Mam bardzo długi i skomplikowany obiekt json, ale chcę uzyskać tylko elementy / klucze na pierwszym poziomie!
Przykład:
{
"1": "a",
"3": "b",
"8": {
"12": "c",
"25": "d"
}
}
Chcę otrzymać wynik 1,3,8 !
Znalazłem ten kod:
for key, value in data.iteritems():
print key, value
Ale wypisuje wszystkie klucze (także 12 i 25 )
Odpowiedzi:
Po prostu zrób 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 posortowanej listy:
źródło
for key in data.keys(): print key
źródło
Jak wspomniał Karthik,
dct.keys()
będzie działać, ale zwróci wszystkie klucze wdict_keys
typie, a nie wlist
typie. Więc jeśli chcesz wszystkie klucze na liście, tolist(dct.keys())
zadziała.źródło
Dobrym sposobem sprawdzenia, czy obiekt Pythona jest instancją typu, jest użycie
isinstance()
funkcji „wbudowanej” Pythona. W przypadku Pythona 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
źródło