2 回答

TA貢獻1906條經驗 獲得超10個贊
請看下面的代碼:
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
}
}

TA貢獻2065條經驗 獲得超14個贊
您可以使用 pandas 對值進行分組并將值轉換為dict. 迭代dict以獲得最終輸出
list1 = [{
'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,
}]
import pandas as pd
df = pd.DataFrame(list1)
d = df.groupby(['acct','date']).sum().apply(list).to_dict()['amount']
new_dict ={}
for k,v in d.items():
if k[0] in new_dict:
existing_dict = new_dict[k[0]]
existing_dict.update({k[1]:v})
new_dict[k[0]] = existing_dict
else:
new_dict[k[0]]={k[1]:v}
輸出
{'2019': {'2020-04-10': 50.0},
'2020': {'2020-04-10': 70.0, '2020-04-13': 100.0}}
添加回答
舉報