gpt4 book ai didi

python - 在 Python 中重构字典的层次结构?

转载 作者:行者123 更新时间:2023-12-02 07:17:01 27 4
gpt4 key购买 nike

如果我在 Python 中有一个嵌套字典,有什么方法可以根据键对其进行重构吗?

我不擅长解释,所以我举个小例子。

d = {'A':{'a':[1,2,3],'b':[3,4,5],'c':[6,7,8]},
'B':{'a':[7,8,9],'b':[4,3,2],'d':[0,0,0]}}

这样重新组织

newd = {'a':{'A':[1,2,3],'B':[7,8,9]},
'b':{'A':[3,4,5],'B':[4,3,2]},
'c':{'A':[6,7,8]},
'd':{'B':[0,0,0]}}

给定一些带有输入的函数

def mysteryfunc(olddict,newkeyorder):
????

mysteryfunc(d,[1,0])

[1,0] 列表传递的意思是将字典的第 2 层键放在第 1 层,第 1 层放在第 2 层。显然,这些值需要与其唯一的键值相关联。

编辑:寻找涵盖一般情况的答案,具有任意未知的嵌套字典深度。

最佳答案

输入:

d = {'A':{'a':[1,2,3],'b':[3,4,5],'c':[6,7,8]},
'B':{'a':[7,8,9],'b':[4,3,2],'d':[0,0,0]}}

inner_dict={}
for k,v in d.items():
print(k)
for ka,va in v.items():
val_list=[]
if ka not in inner_dict:
val_dict={}
val_dict[k]=va
inner_dict[ka]=val_dict
else:
val_dict=inner_dict[ka]
val_dict[k]=va
inner_dict[ka]=val_dict

输出:

{'a': {'A': [1, 2, 3], 'B': [7, 8, 9]},
'b': {'A': [3, 4, 5], 'B': [4, 3, 2]},
'c': {'A': [6, 7, 8]},
'd': {'B': [0, 0, 0]}}

关于python - 在 Python 中重构字典的层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60107720/

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