#python #dictionary #get #key
#python #словарь #получить #Клавиша
Вопрос:
У меня есть фрагмент файла JSON, и поскольку JSON является dict, я хочу получить из него ключи и подразделы.
JSON-код:
{
"Image": {
"URL / Path": "",
"Max_Width": 300
},
"Font": {
...
Чего я хочу достичь: ["Image", "Url / Path", "Max_Width", "Font", ..."]
Что у меня есть в настоящее время: ["Image", "Font", ...]
. Я использовал l=[y for y in __import__('json').load(open(r'FilePath', 'r')).keys()];l
для этого.
Пожалуйста, помогите.
Ответ №1:
Если вы знаете глубину словаря, вы можете просто сделать что-то вроде этого:
data = {
"Image": {
"URL / Path": "",
"Max_Width": 300
},
"Font": {}
}
all_keys = []
for k in data:
all_keys.append(k)
for k1 in data[k]:
all_keys.append(k1)
Это переходит на второй уровень, перебирает каждый ключ и добавляет его к результату. Однако, если у вас в вашем JSON есть несколько (и переменные количества) уровней, вам придется использовать рекурсию, чтобы получить все ключи.
Ответ №2:
Приведенная ниже функция возвращает все ключи в dict dct
независимо от глубины:
def accumulate_keys(dct): # returns all the keys
key_list = []
def accumulate_keys_recursive(dct): # will accumulate keys in key_list
for key in dct.keys():
if isinstance(dct[key], dict):
accumulate_keys_recursive(dct[key])
else:
key_list.append(key)
accumulate_keys_recursive(dct)
return key_list
print(accumulate_keys(dct))