Python 如何构建嵌套字典和列表的列表

Python 如何构建嵌套字典和列表的列表,python,loops,dictionary,nested-lists,Python,Loops,Dictionary,Nested Lists,我正在尝试创建一个包含其他嵌套字典列表的字典列表。下面是列表完成后的样子 [{'key':'value'},{'key':[{'key':'value'},{'key':'value'},]},] 以下是我正在使用的代码: dict1={} list1=[] dict2={} list2=[] for obj1 in some_list: dict1['key'] = value for obj2 in some_other_list:

我正在尝试创建一个包含其他嵌套字典列表的字典列表。下面是列表完成后的样子

[{'key':'value'},{'key':[{'key':'value'},{'key':'value'},]},]
以下是我正在使用的代码:

dict1={}
list1=[]
dict2={}
list2=[]

for obj1 in some_list:
    dict1['key'] = value

    for obj2 in some_other_list:                
        dict2['key'] = value
        dict2['key'] = value
        dict2['key'] = value
        dict2['key'] = value
        dict2['key'] = value
        list2.append(dict2.copy())

    dict1['key'] = list2
    list1.append(dict1)
我的结果是,列表2不断累积,在遍历其他列表后不会清除。

您从未指定应清除列表2。我想你想要的是:

for obj1 in some_list:
    dict1['key'] = value

    for obj2 in some_other_list:                
        ...

    dict1['key'] = list2
    list2 = [] # create new list to fill next time
    list1.append(dict1)

注意,这将用list2替换任何值;您不需要初始化密钥,您可以完全删除该行,这样可能会更清楚。

您希望在哪里清除该行?这一切都在某个更大的循环中吗?很抱歉造成混乱。。。编辑上面的代码以显示嵌套for循环。。。没有更大的循环。。。obj1有2次迭代,obj2有4次迭代。缩进正确吗?最后两行是否应该在外部for循环内?您只在循环外分配例如list2=[],因此不清楚为什么您希望在任何时候都将其清除。只需对最后两行进行编辑…对于超出第一行的dict2['key']=值的每次分配,您显然是最后一个值。这就是你想要的吗?你的孩子是个救生员。。。我整个上午都在和这个摔跤。。。现在该喝点咖啡了……没问题。你可以用dict2做同样的事情,那么你就不需要.copy了,而且如果不是所有的键都被替换,你也不会有奇怪的副作用。