[英]Creating a nested dictionary with data from pre-existing nested dictionary
我需要創建一個字典,其鍵是唯一的課程代碼,其值是具有單個鍵值對的字典,按字母順序描述可用於該課程代碼的部分,以及屬於特定部分的 ID 號,按升序排列。
數據來自名為 student_data 的字典,如下所示:
student_data[:3]
>>>[{'enlistment': [{'course code': 'UK 60', 'section': 'A'},
{'course code': 'GF 24', 'section': 'B'},
{'course code': 'ME 40', 'section': 'B'},
{'course code': 'VY 44', 'section': 'D'},
{'course code': 'EN 94', 'section': 'B'}],
'id': '201001', 'paid': True, 'school': 'SOSE', 'year level': 2},
{'enlistment': [{'course code': 'EQ 61', 'section': 'D'},
{'course code': 'UZ 22', 'section': 'B'},
{'course code': 'KS 36', 'section': 'B'},
{'course code': 'VH 63', 'section': 'A'},
{'course code': 'IW 81', 'section': 'C'}],
'id': '211002', 'paid': True, 'school': 'JGSOM', 'year level': 1},
{'enlistment': [{'course code': 'WE 15', 'section': 'D'},
{'course code': 'ZP 68', 'section': 'A'},
{'course code': 'GI 78', 'section': 'A'},
{'course code': 'GK 72', 'section': 'C'},
{'course code': 'FA 24', 'section': 'D'},
{'course code': 'UJ 28', 'section': 'A'}],
'id': '201003', 'paid': True, 'school': 'JGSOM', 'year level': 2}]
所需輸出的格式:
{
course_code: [{
"section": section_letter,
"class list": [
id_number_1,
id_number_2,
id_number_3,
]
}
course_code: [{
"section": section_letter,
"class list": [
id_number_1,
id_number_2,
id_number_3,
]
}
]
}
我真的不擅長 Python 中的字典,因為我還不太了解它。 請幫忙。
您可以使用collections.defaultdict
:
from collections import defaultdict
d = defaultdict(dict)
student_data = [{'enlistment': [{'course code': 'UK 60', 'section': 'A'}, {'course code': 'GF 24', 'section': 'B'}, {'course code': 'ME 40', 'section': 'B'}, {'course code': 'VY 44', 'section': 'D'}, {'course code': 'EN 94', 'section': 'B'}], 'id': '201001', 'paid': True, 'school': 'SOSE', 'year level': 2}, {'enlistment': [{'course code': 'EQ 61', 'section': 'D'}, {'course code': 'UZ 22', 'section': 'B'}, {'course code': 'KS 36', 'section': 'B'}, {'course code': 'VH 63', 'section': 'A'}, {'course code': 'IW 81', 'section': 'C'}], 'id': '211002', 'paid': True, 'school': 'JGSOM', 'year level': 1}, {'enlistment': [{'course code': 'WE 15', 'section': 'D'}, {'course code': 'ZP 68', 'section': 'A'}, {'course code': 'GI 78', 'section': 'A'}, {'course code': 'GK 72', 'section': 'C'}, {'course code': 'FA 24', 'section': 'D'}, {'course code': 'UJ 28', 'section': 'A'}], 'id': '201003', 'paid': True, 'school': 'JGSOM', 'year level': 2}]
for i in student_data:
for c in i['enlistment']:
if c['section'] in d[c['course code']]:
d[c['course code']][c['section']].append(i['id'])
else:
d[c['course code']][c['section']] = [i['id']]
r = {a:[{'section':c, 'class list':d} for c, d in b.items()] for a, b in d.items()}
輸出:
{'UK 60': [{'section': 'A', 'class list': ['201001']}], 'GF 24': [{'section': 'B', 'class list': ['201001']}], 'ME 40': [{'section': 'B', 'class list': ['201001']}], 'VY 44': [{'section': 'D', 'class list': ['201001']}], 'EN 94': [{'section': 'B', 'class list': ['201001']}], 'EQ 61': [{'section': 'D', 'class list': ['211002']}], 'UZ 22': [{'section': 'B', 'class list': ['211002']}], 'KS 36': [{'section': 'B', 'class list': ['211002']}], 'VH 63': [{'section': 'A', 'class list': ['211002']}], 'IW 81': [{'section': 'C', 'class list': ['211002']}], 'WE 15': [{'section': 'D', 'class list': ['201003']}], 'ZP 68': [{'section': 'A', 'class list': ['201003']}], 'GI 78': [{'section': 'A', 'class list': ['201003']}], 'GK 72': [{'section': 'C', 'class list': ['201003']}], 'FA 24': [{'section': 'D', 'class list': ['201003']}], 'UJ 28': [{'section': 'A', 'class list': ['201003']}]}
好,我來教你python中的字典是什么。 它們是具有{key:value, key:value}
語法的無序數據集,所有鍵都需要彼此不同。 換句話說,Key 必須是唯一的。 說,你有一本字典, d = {1:"XYZ", 2:"WER"}
1 和 2 是鍵,而 "XYZ" 和 "WER" 是各自的值
因此,如果您想獲取任何鍵的數據,只需鍵入 d[key],例如 d[1]。 您將得到“XYZ”作為答案 如果您不知道密鑰,只需鍵入d.keys()
。 它將打印所有鍵,然后使用循環
for i in d.keys():
print(d[i])
即使您不知道密鑰,這也會為您提供所有值...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.