Доступ к ключам словаря внутри словаря внутри словаря

#python #dictionary

#python #словарь

Вопрос:

У меня есть несколько функций, определенных для настройки некоторых словарей и упорядочивания вещей. Что я пытаюсь сделать сейчас, так это использовать вложенный словарь в качестве параметра функции для другой функции.

K итак, у меня есть этот введенный формат:

 list = {'123': {'Name': 'foo', 'Responses': {'Q4': 'a', 'Q1': 'a', 'Q2': 'b', 'Q3': 'c'}, 'ID': '123'}, '234': {'Name': 'bar', 'Responses': {'Q4': 'b', 'Q1': 'a', 'Q2': 'b', 'Q3': 'c'}, 'ID': '234'}, '345': {'Name': 'xyzzy', 'Responses': {'Q4': 'b', 'Q1': 'a', 'Q2': 'a', 'Q3': 'c'}, 'ID': '345'}}
  

Мне нужно получить доступ к ключу ‘Responses’, чтобы функция могла использовать ключи Q1, Q2 и т.д. И сравнивать с другим dictionart. И мне нужно сделать это для каждых 123, 234, 345 ключей.
Тогда не так важно, мне нужно сопоставить key key для значений, которые выдает функция, и обновить список, но я могу разобраться с этим, как только я запущу эту функцию.

Я пытался использовать list.get(‘Responses’) в качестве параметра, но он не возвращает None, поэтому я не совсем уверен, куда идти дальше.

Ответ №1:

.get() Параметр ищет ключи верхнего уровня. На самом деле вы, вероятно, хотите перечислить словари подуровня:

 for key, sub_dict in toplevel_dict.items():
    responses = sub_dict['Responses']
    # do something with responses here; responses is a dict
  

Ответ №2:

Вы можете сделать следующее, используя понимание списка :

 l = [dic['Responses'] for _, dic in list.items()]
# You get a list of all your dictionaries
  

Ответ №3:

Вам нужно будет использовать цикл for с элементами iter для извлечения информации.

 for key, value in list.iteritems():
    print value['Responses']