如何使用for循环将键值对添加到新的空字典中?

时间:2021-01-30 19:46:36

标签: python-3.x

所以我试图从具有字典值的列表中创建一个新字典。

debts_list = [{'amount': 123.46, 'id': 0}, {'amount': 100, 'id': 1}, {'amount': 4920.34, 'id': 2}, {'amount': 12938, 'id': 3}, {'amount': 9238.02, 'id': 4}]

这是我的 for 循环。

new_debt_dic = {}
for i in debts_list:
    for k, v in i.items():
        new_debt_dic[k] = v

这里的问题是我只得到最后一个键和值。当我想获取所有值时,输出为 {'amount': 9238.02, 'id': 4}。我尝试使用 setdefault 但它似乎并没有像我想要的那样工作。还有哪些库/解决方案可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

在 Python 中,字典键是唯一的。如果您再次为同一个键赋值,它会被覆盖。示例:

dct = {}
dct["key"] = "value"
print(dct)
dct["key"] = "value2"
print(dct)

输出:

{"key": "value"}
{"key": "value2"}

您唯一的选择是创建金额列表和 ID 列表:

new_debt_dic = {"amounts": [], "ids": []}
for i in debts_list:
    new_debt_dic["amounts"].append(i["amount"])
    new_debt_dic["ids"].append(i["id"])
print(new_debt_dic)

输出:

{"amounts": [123.46, 100, ...], "ids": [0, 1, ...]}

答案 1 :(得分:0)

debts_list 的每个值都是字典,只有 2 个键值对,其中键是 amountid。我认为您打算使用 id 作为您的密钥 - 如果是这样,您应该使用以下内容:

new_debt_dic = {}    
for d in debts_list:
        new_debt_dic[d['id']] = d['amount']