我想拼合一个嵌套字典。在此建议解决此问题的方法:https://stackoverflow.com/a/41801708/8443371。问题: 我只想获得与最后一层中的键相同的键。 输入:
d = {'a': 1,
'c': {'b': {'x': 5,
'y' : 10}},
'd': [1, 2, 3]}
我想要一个输出:
{'a': 1, 'x': 5, 'y': 10, 'd': [1, 2, 3]}
仅使用python的建议应该比基于C实现的Pandas慢。
注意: 假设最大两层字典,我有一个python解决方案,这似乎很慢:
for key in dict.keys():
if '.' in key:
dict[key.split('.')[-1]] = dict.pop(key)
答案 0 :(得分:2)
这是我为您提供的字典提供的纯python解决方案:
d = {'a': 1,
'c': {'b': {'x': 5,
'y' : 10}},
'd': [1, 2, 3]}
def flatten_dict(dic):
result = {}
for key in dic.keys():
if isinstance(dic[key], dict):
result.update(flatten_dict(dic[key]))
else:
result[key] = dic[key]
return result
flatten_dict(d)
{'a': 1, 'x': 5, 'y': 10, 'd': [1, 2, 3]}
%%timeit
flatten_dict(d)
2.45 µs ± 72.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)