繁体   English   中英

如何在 python 中制作嵌套字典

[英]how to make nested dictionary in python

我想制作一个嵌套字典,但我不知道为什么我没有得到我想要的结果

def stud(data):
    empty_dic = {}
    for line in data:
       empty_dic[line["stud_num"]]={line[course]:line[marks]}
    return empty_dic
data = [
  {
   
    "course": "asd",
    "stud_num": "123",
    "marks": 28
  },
  {
    
    "course": "qrt",
    "stud_num": "123",
    "marks": 27
  },
  {
 "course": "asd",
    "stud_num": "124",
    "marks": 30
  },
  {
   "course": "zx",
    "stud_num": "124",
    "marks": 31
  },
  {
   "course": "zx",
    "stud_num": "123",
    "marks": 28
  }
]

我的代码的 output 是 => {"123":{"zx":28},"124":{"zx":31}}

我想要的 output 是 => {"123":{"asd":28,"qrt":27,"zx":28},124:{"asd":30,"zx":31}}

使用可以简单地通过使用collections.defaultdict

from collections import defaultdict

adict = defaultdict(dict)
for obj in data:
    adict[obj['stud_num']][obj["course"]] = obj['marks']

print(adict)

您的固定版本(如果 empty_dic 中没有 line["stud_num"],则为空字典):

def stud(data):
    empty_dic = {}
    for line in data:
        if line["stud_num"] not in empty_dic:
            empty_dic[line["stud_num"]] = {}
        empty_dic[line["stud_num"]][line['course']] = line['marks']
    return empty_dic

Output:

{'123': {'asd': 28, 'qrt': 27, 'zx': 28}, '124': {'asd': 30, 'zx': 31}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM