python - 如何从现有字典列表创建嵌套字典
问题描述
我已经有如下字典列表:
[{
'acct': '2020',
'date': '2020-04-13',
'amount': 70.0,
},
{
'acct': '2020',
'date': '2020-04-13',
'amount': 30.0,
},
{
'acct': '2020',
'date': '2020-04-10',
'amount': 70.0,
},
{
'acct': '2019',
'date': '2020-04-10',
'amount': 50.0,
}]
我想创建一个新的嵌套字典 → 其初始键为 →account number
其值将是另一个以date
→ 作为键的字典,其值将是total amount
→ 通过将与该特定日期关联的所有金额相加(其中钥匙)。
我的预期输出应如下所示:
newDict= {
"2020" : {
'2020-04-10: 70.0
'2020-04-13: 100.0, → (i.e., 70.0 + 30.0)
},
"2019" : {
'2020-04-10: 50.0,
},
解决方案
请看下面的代码:
x = [
{
'acct': '2020',
'date': '2020-04-13',
'amount': 70.0,
},
{
'acct': '2020',
'date': '2020-04-13',
'amount': 30.0,
},
{
'acct': '2020',
'date': '2020-04-10',
'amount': 70.0,
},
{
'acct': '2019',
'date': '2020-04-10',
'amount': 50.0,
}
]
y = {}
for i in x:
if i["acct"] not in y:
y[i["acct"]] = {i["date"]: i["amount"]}
else:
if i["date"] in y[i["acct"]]:
y[i["acct"]][i["date"]] += i["amount"]
else:
y[i["acct"]].update({i["date"]: i["amount"]})
print(y)
输出:
{
'2020': {
'2020-04-13': 100.0,
'2020-04-10': 70.0
},
'2019': {
'2020-04-10': 50.0
}
}
推荐阅读
- sql - 访问交叉表多行作为列标题?
- python - How to calculate sum of two event till the condition breaks in Python? I am new to python
- python - 在 Python 中使用模拟来确定概率序列
- ansible - 在ansible中,我可以为模块使用变量而不是使用模块名称吗?
- excel - Excel VBA,如果列中的单元格包含任何内容,则将该行中的单元格更改为特定文本
- python - DIScord 命令认为 bool 是 True
- jenkins - 在 Jenkins Job 的 config.xml 中管理插件版本
- javascript - 在 Options API (Vue Js) 中使用 Composition API
- python - Web抓取python - 迭代网页时出错
- c# - C# 内存不足