Извлечение определенного значения из словаря

#python-3.x

#python-3.x

Вопрос:

Я хотел бы получить определенное значение из словаря на основе другого значения в том же словаре. Вот мой код, логика которого заключается в том, что если b == 5, то я хотел бы получить значение ‘a’ на том же уровне словаря, которое должно быть 4.

 dic = {'main':
           {'second_level':{
               'third_level_1':{
                'fourth_level_1':{'a':1, 'b':2, 'c':3},
                'fourth_level_2':{'a':4, 'b':5, 'c':6}
                 },
               'third_level_2':{
                'fourth_level_1':{'a':7, 'b':8, 'c':9},
                'fourth_level_2':{'a':14, 'b':15, 'c':16}
                 }
                }
           }
}

for key,value in dic['main']['second_level']['third_level_1']['fourth_level_2'].items():
    if value == 5:
        print(value of a?)
  

Комментарии:

1. В чем вопрос? Вы погружаетесь dict в обычным способом. Вы не получаете ожидаемый результат? Если это что-то другое, пожалуйста, укажите ожидаемый ввод и ожидаемый результат.

2. Я пытаюсь получить значение ключа ‘a’. У меня были пары ключ / значение для dic[‘main’][‘second_level’][‘third_level_1’][‘fourth_level_2’], если значение == 5, которое является парой ключ / значение ‘b’: 5, я хочу, чтобы скрипт вернул мне значение ‘a’. Есть ли какой-либо индекс для ключа, который я могу использовать для его ссылки?

3. Просто используйте ту же ссылку на dict . search_dict = dic['main']['second_level']['third_level_1']['fourth_level_2'] for key, value in search_dict: print(search_dict['a'])

Ответ №1:

 for p_id, p_info in dic['main']['second_level']['third_level_1'].items():
    for key in p_info:
        if key=='b' and p_info[key]==5:
            print(p_info['a'])
  

В вашем коде итерация выполняется на fourth_level_2, поэтому невозможно получить доступ к fourth_level_2[‘a’] . Я выполняю итерацию на third_level_1, чтобы можно было получить доступ к fourth_level_2[‘a’], он дает 4 в качестве ответа.

Комментарии:

1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.

2. добавлено объяснение