#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'}}