使用熊猫拼合嵌套字典

时间:2019-02-21 12:08:44

标签: python pandas python-2.7

我想拼合一个嵌套字典。在此建议解决此问题的方法: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)

1 个答案:

答案 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)