所以我试图从具有字典值的列表中创建一个新字典。
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 但它似乎并没有像我想要的那样工作。还有哪些库/解决方案可以解决这个问题?
答案 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 个键值对,其中键是 amount
或 id
。我认为您打算使用 id
作为您的密钥 - 如果是这样,您应该使用以下内容:
new_debt_dic = {}
for d in debts_list:
new_debt_dic[d['id']] = d['amount']