我有n个非常复杂的Python字典,深度级别很大(~5),我不知道如何正确快速地合并它们,而不是在它们上面迭代百万次。
值得一提的是,正如你将在下文中看到的,口述有着严格的结构。
我尝试的解决方案与:
- 缺席判决
- 归并算子
Python的版本- 3.9
d1 = {
"name": "Louis",
"places": [
{
"code": "A",
"subplaces": [
{
"name": "Subplace name",
"subsubplaces": [
{
"name": "subsub1"
}
]
},
{
"name": "Subplace name2",
"subsubplaces": [
{
"name": "subsub1"
}
]
}
]
}
]
}
d2 = {
"name": "Louis",
"places": [
{
"code": "B",
"subplaces": [
{
"name": "Subplace name",
"subsubplaces": [
{
"name": "subsub1"
}
]
},
{
"name": "Subplace name2",
"subsubplaces": [
{
"name": "subsub1"
}
]
}
]
}
]
}
d3 = {
"name": "Louis",
"places": [
{
"code": "A",
"subplaces": [
{
"name": "Subplace name X",
"subsubplaces": [
{
"name": "subsub1"
}
]
}
]
}
]
}
在这种情况下,输出应为
d_merged = {
"name": "Louis",
"places": [
{
"code": "A",
"subplaces": [
{
"name": "Subplace name",
"subsubplaces": [
{
"name": "subsub1"
}
]
},
{
"name": "Subplace name2",
"subsubplaces": [
{
"name": "subsub1"
}
]
},
{
"name": "Subplace name X",
"subsubplaces": [
{
"name": "subsub1"
}
]
}
]
},
{
"code": "B",
"subplaces": [
{
"name": "Subplace name",
"subsubplaces": [
{
"name": "subsub1"
}
]
},
{
"name": "Subplace name2",
"subsubplaces": [
{
"name": "subsub1"
}
]
}
]
}
]
}
2条答案
按热度按时间b91juud31#
您的任务非常具体,因此不可能有通用的解决方案。我建议您合并嵌套字典中的所有 "places"、"subplaces" 和 "subsubplaces",以清除所有可能的重复项,然后修改数据以匹配所需的格式。
用法:
输出:
11dmarpk2#
我认为你的数据表示有很多非必要的细节,我们可以通过这个解决方案来减少它们:
输出将为:
如果你想要你想要的输出,很容易把这个修改成你想要的输出,但是这个更易读,更易维护。