Python 将字典添加到字典或列表中会显示重复项

Python 将字典添加到字典或列表中会显示重复项,python,arrays,dictionary,Python,Arrays,Dictionary,我知道标题看起来很简单,但我尝试了多种方法,但我没能达到我想要的 我尝试了不同的方法,我在这里研究了类似的问题,我尝试了他们的解决方案,但我无法让它发挥作用 我试图过滤一个列表,然后返回一个包含字典(json)的字典 这将为每个cdata打印相同的值: {0: {'id': '456', 'title': 'def', 'url': 'https'}, 1: {'id': '456', 'title': 'def', 'url': 'https'}} 请注意,索引0,1具有相同的精确值 如果我

我知道标题看起来很简单,但我尝试了多种方法,但我没能达到我想要的

我尝试了不同的方法,我在这里研究了类似的问题,我尝试了他们的解决方案,但我无法让它发挥作用

我试图过滤一个列表,然后返回一个包含字典(json)的字典

这将为每个cdata打印相同的值:

{0: {'id': '456', 'title': 'def', 'url': 'https'}, 1: {'id': '456', 'title': 'def', 'url': 'https'}}
请注意,索引0,1具有相同的精确值

如果我尝试在循环内打印(单个):

{'id': '123', 'title': 'abc', 'url': 'http'}

{'id': '456', 'title': 'def', 'url': 'https'}
它向我显示了一个不同的值,这是有意义的,但我不确定为什么最终结果显示了single最后一个值的重复

我尝试了cdata.update({I:single})而不是=并且仍然存在相同的问题

我尝试了不同的方法,数组而不是字典

def clean_content(data):
    single = {}
    cdata = []
    for i in range(3):
        single.clear()
        single['id'] = data[i]['id']
        single['title'] = data[i]['title']
        single['url'] = data[i]['alternate'][0]['href']
        cdata.append(single)
    print(cdata)
我也得到了同样的结果!该列表仅包含最后一个元素的副本
有人能告诉我我错过了什么吗

您的问题是在每个键下存储相同的词典。如果执行
single.clear()
,则会清除存储在每个键下的同一词典。如果执行
single['id']=data[i]['id']
,则会将新的键值对添加到存储在每个键下的同一词典中。等等您要做的是为每个键创建一个单独的字典。只需将
single={}
移动到循环中,然后去掉
single.clear()
。您可以添加
数据吗?
def clean_content(data):
    single = {}
    cdata = []
    for i in range(3):
        single.clear()
        single['id'] = data[i]['id']
        single['title'] = data[i]['title']
        single['url'] = data[i]['alternate'][0]['href']
        cdata.append(single)
    print(cdata)