gpt4 book ai didi

python - 如何在不覆盖旧值的情况下更新字典中的键

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:05 25 4
gpt4 key购买 nike

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)

关于python - 如何在不覆盖旧值的情况下更新字典中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19993841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com