#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. добавлено объяснение