input = { "a" : { "x": 1, "y": 2 },
"b" : { "x": 3, "z": 4 } }
output = {'y': {'a': 2},
'x': {'a': 1, 'b': 3},
'z': {'b': 4} }
我需要根据输入创建一个新字典,它应该作为输出出现。到目前为止我已经写了:
def pivot_nested_dict(nested_dict):
5 stateDict={}
6 for i in nested_dict:
7 dict2=nested_dict[i]
8 for j in dict2:
9 stateDict[j]= {i: dict2[j]}
10 return stateDict
11
12 print pivot_nested_dict(input)
我几乎有了答案,output={'y': {'a': 2}, 'x': {'b': 3}, 'z': {'b': 4}}。所以,x 键覆盖了 'a': 1. 如何同时保留 a 和 b?
你需要做的是检查键是否已经在 stateDict
中,如果是,则向嵌套字典中添加一个新元素:
def pivot_nested_dict(nested_dict):
stateDict = {}
for i in nested_dict:
dict2 = nested_dict[i]
for j in dict2:
if j not in stateDict:
stateDict[j] = {i: dict2[j]}
else:
stateDict[j][i] = dict2[j]
return stateDict
print pivot_nested_dict(inp)
我是一名优秀的程序员,十分优秀!