Задать вопрос
@rsytrade

Как обрабатывать многоуровневые словари в Python?

Можно как-то более оптимально записать/обработать такую конструкцию при обходе dict:

try:
    new_dic['Name_1'] = source_1['key_1']['key_2']['key_3']
except:
    new_dic['Name_1']  = None
try:
    new_dic['Name_2'] = source_2['key_1']['key_2']
except:
    new_dic['Name_2']  = None
try:
    new_dic['Name_3'] = source_1['key_1']['key_2']['key_3']['key_4']
except:
    new_dic['Name_3']  = None
...
  • Вопрос задан
  • 431 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
Alexeytur
@Alexeytur
def dict_get_recursive(source, path):
	current_dict = source
	for path_idx, path_key in enumerate(path):	
		if path_idx == len(path)-1:
			return current_dict.get(path_key, None)
		
		current_dict = current_dict.get(path_key, None)
		if current_dict is None:
			return None
			
new_dic['Name_1'] = dict_get_recursive(source_1,['key_1','key_2','key_3'])
new_dic['Name_2'] = dict_get_recursive(source_2,['key_1','key_2'])
new_dic['Name_3'] = dict_get_recursive(source_1,['key_1','key_2','key_3','key_4'])
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы