функция python для обмена ключами dict

#python #dictionary

Вопрос:

У меня есть вложенный словарь.

 x = {
'Jack': {'Age': '34', 'Location' : 'Chicago'}, 'Mary': {'Insurance': 'fullPaid', 'Age' : '27', 'Location' : 'London'}
}
 

Что я пытаюсь сделать, так это поменять местами ключи дикта, чтобы выходной словарь выглядел так:

 {
'Age':{'Jack' : '34', 'Mary' : '27'}, 'Location': {'Jack' : 'Chicago', 'Mary' : 'London'}, 'Insurance': {'Mary' : 'fullPaid'} 
}
 

До сих пор я доходил до этого момента:

 y = defaultdict(list)
for key, values in x.items(): 
    for value in values:
        y[value].append(key)
 

где вывод

 defaultdict(<class 'list'>, {'Age': ['Jack', 'Mary'], 'Location': ['Jack', 'Mary'], 'Insurance': ['Mary']})
 

Ответ №1:

Закройте, но вам также нужно использовать defaultdict(dict) и распаковать вложенный диктант.

 from collections import defaultdict

x = {
'Jack': {'Age': '34', 'Location' : 'Chicago'}, 'Mary': {'Insurance': 'fullPaid', 'Age' : '27', 'Location' : 'London'}
}

y = defaultdict(dict)
for name, attrs in x.items():
    for key, value in attrs.items():
        y[key][name] = value

print(dict(y))
 

Результат:

 {'Age': {'Jack': '34', 'Mary': '27'}, 'Location': {'Jack': 'Chicago', 'Mary': 'London'}, 'Insurance': {'Mary': 'fullPaid'}}