如何在Python中优化嵌套到平面字典的转换?

如何在Python中优化嵌套到平面字典的转换?,python,performance,dictionary,Python,Performance,Dictionary,目标是转换以下嵌套字典 secondary_citing_paper = [{"paper_href": 'Unique One', 'Paper_year': 1}, \ {"paper_href": 'Unique Two', 'Paper_year': 2}] inner_level = [secondary_citing_paper, secondary_citing_paper] my_dict

目标是转换以下嵌套字典

secondary_citing_paper = [{"paper_href": 'Unique One', 'Paper_year': 1}, \
                          {"paper_href": 'Unique Two', 'Paper_year': 2}]
inner_level = [secondary_citing_paper, secondary_citing_paper]
my_dict_x = [inner_level, inner_level]
进入Python的平面字典(很抱歉这里更好地使用了术语!),如下所示

expected_output = [{"paper_href": 'Unique One', 'Paper_year': 1}, \
                   {"paper_href": 'Unique Two', 'Paper_year': 2}, \
                   {"paper_href": 'Unique One', 'Paper_year': 1}, \
                   {"paper_href": 'Unique Two', 'Paper_year': 2}, \
                   {"paper_href": 'Unique One', 'Paper_year': 1}, \
                   {"paper_href": 'Unique Two', 'Paper_year': 2}, \
                   {"paper_href": 'Unique One', 'Paper_year': 1}, \
                   {"paper_href": 'Unique Two', 'Paper_year': 2}, \
                   ]
起草了以下准则

expected_output = []
for my_dict in my_dict_x:
    for the_ref in my_dict:
        for x_ref in the_ref:
            expected_output.append( x_ref )
虽然代码达到了它的目的,但我想知道是否还有更多的python方法

注:我发现了几个问题,但这是关于合并2本字典的问题

编辑: 由于与一个类似的问题相关,该线程已经关闭,我无法删除该线程,因为Vishal Singh已经发布了他的建议

然而,根据建议,递归转换的一种方法如下

def flatten(container):
    for i in container:
        if isinstance(i, (list,tuple)):
            yield from flatten(i)
        else:
            yield i


expected_output=list(flatten(my_dict_x))
或者更快

def flant(items,seqtypes=(list,tuple)):
对于枚举中的i,x(项):
而i
您的代码更具Python风格的版本如下所示

expected_output = [
    x_ref
    for my_dict in my_dict_x
    for the_ref in my_dict
    for x_ref in the_ref
]
expected_output = [
    x_ref
    for my_dict in my_dict_x
    for the_ref in my_dict
    for x_ref in the_ref
]