如何在 Python 中有效地重新组织 dict?

How to efficiently re-organise dict in Python?

objective 是将两个级别 dict 重新组织在一个级别中。

假设二级 dict 给出如下:

first_level_one = dict(my='my', ex='ex', second_level=dict(sec_one='sec_one', sec_two='omy'))
first_level_two = dict(my='my', ex='ex', second_level=dict(sec_one='sec_one', sec_two='omy'))
combine = [first_level_one, first_level_two]

预期的输出应该是:

combine_trim=[dict(my='my', ex='ex', sec_one='sec_one', sec_two='omy'),\
                dict(my='my', ex='ex', sec_one='sec_one', sec_two='omy')]

基于上述需求,起草了如下代码

first_level_one = dict(my='my', ex='ex', second_level=dict(sec_one='sec_one', sec_two='omy'))
first_level_two = dict(my='my', ex='ex', second_level=dict(sec_one='sec_one', sec_two='omy'))
combine = [first_level_one, first_level_two]
combine_trim=[]
for my_dic in combine:
    xx=my_dic['second_level']
    my_dic['sec_one']=xx['sec_one']
    my_dic['sec_two'] = xx['sec_two']
    del my_dic['second_level']
    combine_trim.append(my_dic)

有两个问题;

  1. 与上面建议的代码相比,这是更有效的方法。这是因为,secondary level的key比较多,实际情况下。
  2. 与引入主要用于 append 程序的 combine_trim 相比,是否有可能只有 combine 变量?

试试这个,使用 isinstance 检查值是否为 dict & 使用 update 添加到创建的 tmp 字典。

combine_trim=[]
for my_dic in [first_level_one, first_level_two]:
    tmp = {}
    for k, v in my_dic.items():
        if isinstance(v, dict):
           tmp.update(v)
        else:
            tmp[k] = v

    combine_trim.append(tmp)