亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從現有的字典列表創建嵌套字典

如何從現有的字典列表創建嵌套字典

楊__羊羊 2022-10-11 17:07:30
我已經有如下字典列表:[{   '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,   },
查看完整描述

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

    }

}


查看完整回答
反對 回復 2022-10-11
?
翻翻過去那場雪

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}}


查看完整回答
反對 回復 2022-10-11
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號