Python 将字典添加到字典或列表中会显示重复项
我知道标题看起来很简单,但我尝试了多种方法,但我没能达到我想要的 我尝试了不同的方法,我在这里研究了类似的问题,我尝试了他们的解决方案,但我无法让它发挥作用 我试图过滤一个列表,然后返回一个包含字典(json)的字典 这将为每个cdata打印相同的值: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具有相同的精确值 如果我
{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)