关于这个主题有很多问题,但我还没有能够根据我的情况调整解决方案。假设我有一个平面文件列表:
[{'Name': 'Jim', 'Attribute': 'Height', 'Value': '6.3'},
{'Name': 'Jim', 'Attribute': 'Weight', 'Value': '170'},
{'Name': 'Mary', 'Attribute': 'Height', 'Value': '5.5'},
{'Name': 'Mary', 'Attribute': 'Weight', 'Value': '140'}]
我希望将其转换为嵌套字典,以便属性/值对与每个名称相关联:
{
'Jim': {'Height': '6.3', 'Weight': '170'},
'Mary': {'Height': '5.5', 'Weight': '140'}
}
答案 0 :(得分:8)
使用defaultdict
以便于处理这些条目:
output = defaultdict(dict)
for person in people:
output[person['Name']][person['Attribute']] = person['Value']
答案 1 :(得分:3)
在此处查看我的NestedDict课程:https://stackoverflow.com/a/16296144/2334951
>>> d = [{'name': 'Jim', 'attribute': 'Height', 'value': 6.3},
... {'name': 'Jim', 'attribute': 'Weight', 'value': 170},
... {'name': 'Mary', 'attribute': 'Height', 'value': 5.5},
... {'name': 'Mary', 'attribute': 'Weight', 'value': 140}, ]
>>> result = NestedDict()
>>> for i in d:
... path = [i['name'], i['attribute']] # list of keys in order of nesting
... result[path] = i['value']
>>> print(result)
{'Mary': {'Height': 5.5, 'Weight': 140}, 'Jim': {'Height': 6.3, 'Weight': 170}}