嵌套用于循环,无法在没有Catch 22的情况下存储迭代

Ara*_*ida 2 python loops python-3.x

在一开始我有一个主列表,我打算将所有内容放入:

master_list = []
Run Code Online (Sandbox Code Playgroud)

我有数据存储在嵌套列表中,如下所示:

multi_list = [[1,2,3,4,5],[6,7,8,9,10]]
Run Code Online (Sandbox Code Playgroud)

最终结果需要将此数据转换为这样的dicts列表:

master_list
>> [{'x1':1,'x2':2,'y1':3,'y2':4,'id':5},{'x1':6,'x2':7,'y1':8,'y2':9,'id':10}]
Run Code Online (Sandbox Code Playgroud)

这就是我的最终目标.我实现这一目标的方法如下:

multi_list = [[1,2,3,4,5],[6,7,8,9,10]]
master_list = []
iterating_dict = {}
for n in multi_list:
    for idx,i in enumerate(['x1','x2','y1','y2','id']):
        iterating_dict[i] = n[idx]
    master_list.append(iterating_dict)

master_list
>>[{'x1':6,'x2':7,'y1':8,'y2':9,'id':10},{'x1':6,'x2':7,'y1':8,'y2':9,'id':10}]
Run Code Online (Sandbox Code Playgroud)

最终发生的是第二项multi_list存储两次.我希望它存储所有项目的转换后的dicts multi_list.我认为这意味着它append不在循环的正确位置.但是,当我将它放在循环中时,它不会添加任何内容master_list.如果没有append超出范围,我不能再进一步.

在python中有哪些常规方法来解决这种困难?

fil*_*500 6

您需要在外部for循环的每次迭代中重置迭代dict.否则它将继续累积值.

这样的事情应该有效:

for n in multi_list:
    iterating_dict = {}
    for idx,i in enumerate(['x1','x2','y1','y2','id']):
        iterating_dict[i] = n[idx]
    master_list.append(iterating_dict)
Run Code Online (Sandbox Code Playgroud)