各位老哥我想问下在 python3 中,我有两个多层 dict,怎么合并他们 例如这种,谢谢老哥们
{
user_id:{
title_id:{
relation_id:{
reviewer_id:rate
}
}
}
}
1
renmu123 2020-12-07 21:14:41 +08:00 via Android
不知道你所谓的合并两个 dict 是什么操作,你给了个例子(例子也不完整),但是没有给出应该呈现的结果
|
2
westoy 2020-12-07 21:15:31 +08:00
你给案例别给一半啊.....
|
3
lanceadd OP @renmu123 @westoy 抱歉抱歉我也不知道为啥会缺了一块, 发布前预览是没问题的, 另外一个 dict 也是这个,但是 user_id,title_id 这些 key 可能不相同,然后可能层级也不一样,可能会只有两层那种,然后想把一个 dict,update 到另外一个 dict 上,如果那一层的 key 相同 value 不同就合并上去,举个例子按照我上面那个结构,user_id 、title_id 相同但是 relation_id 不同,怎么把它俩合并起来,我原本以为 dict.update()就好了,但是发现对多层的 dict 直接 update 会直接覆盖,然后发现只能一层一层的 update,就很尴尬,除了递归还有啥办法可以更新不同深度的嵌套字典的值吗
|
4
lanceadd OP 多个嵌套字典合并为一个
|
5
lanceadd OP 解决了
``` def recursive_update( default: dict, custom: dict ): """ 递归更新 dict :param default: :param custom: :return: """ if not isinstance(default, dict) or not isinstance(custom, dict): raise TypeError('Params of recursive_update should be dicts') for key in custom: if isinstance(custom[key], dict) and isinstance(default.get(key), dict): default[key] = recursive_update(default[key], custom[key]) else: default[key] = custom[key] return default ``` |