将具有相同键的dict添加到列表中,而不覆盖Python中的值

将具有相同键的dict添加到列表中,而不覆盖Python中的值,python,list,dictionary,Python,List,Dictionary,我有以下问题:在输入参数列表上的循环中,我对每个列表条目进行API调用。然后我想将结果写入dict,并将该dict附加到输出列表中。在循环结束时,我想打印输出列表。发生的情况是,每次我附加到输出列表时,输入参数列表中的最后一个API调用/最后一个元素都会被覆盖 import requests input_parameters = ['A', 'B', 'C', 'D'] output = [] record = {} for input in input_parameters: r

我有以下问题:在输入参数列表上的循环中,我对每个列表条目进行API调用。然后我想将结果写入dict,并将该dict附加到输出列表中。在循环结束时,我想打印输出列表。发生的情况是,每次我附加到输出列表时,输入参数列表中的最后一个API调用/最后一个元素都会被覆盖

import requests

input_parameters = ['A', 'B', 'C', 'D']

output = []
record = {}

for input in input_parameters:
    r=requests.get("https://api.domain.com/v2/param=" + str(input))

    record['id'] = str(r.json()['data'][0]['id'])
    record['descr'] = str(r.json()['data'][0]['descr'])
    record['qty'] = str(r.json()['data'][0]['qty'])

    output.append(record)

print(output)
我得到的输出:

[{'id': 'D', 'descr': 'foobar', 'qty': '10'}, {'id': 'D', 'descr': 'foobar', 'qty': '10'}, {'id': 'D', 'descr': 'foobar', 'qty': '10'}, {'id': 'D', 'descr': 'foobar', 'qty': '10'}]
我想要的输出:

[{'id': 'A', 'descr': 'barfoo', 'qty': '50'}, {'id': 'B', 'descr': 'bar or foo', 'qty': '80'}, {'id': 'C', 'descr': 'foo foo bar', 'qty': '25'}, {'id': 'D', 'descr': 'foobar', 'qty': '10'}]
非常感谢您的帮助。

输出。追加(记录)
不会复制
记录
。因此,当您随后执行时,比如说,
record['id']=str(r.json()['data'][0]['id'])
,原始的、唯一的
记录将被修改

由于只有一个
record
对象,连续调用
output.append(record)
将使用对同一字典对象的引用填充
output

您可以每次创建一个新词典:

record = {
    'id': str(r.json()['data'][0]['id']),
    'descr': str(r.json()['data'][0]['descr'])
    'qty': str(r.json()['data'][0]['qty'])
}

或者使用
output.append(record.copy())
复制字典。在任何情况下,您都需要为
input\u parameters

的每个元素创建一个新的dictionary对象,将for循环中的最后一行更改为
output.append(record.copy())
。是一种解释,因为你一直在列表中添加相同的词条