如何从现有的字典列表创建嵌套字典

我已经有如下字典列表:


[{ 

  '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,

   },


杨__羊羊
浏览 118回答 2
2回答

隔江千里

请看下面的代码: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    }}

翻翻过去那场雪

您可以使用 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 pddf = 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}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python