gpt4 book ai didi

python - 如何将项目分组到存储为字典值的集合中?

转载 作者:行者123 更新时间:2023-11-28 21:41:56 24 4
gpt4 key购买 nike

所以这是我现在的代码,

def course_rolls(records):
"""Returns course code as a key and then the
student id as the value of the key"""
course_roll_dict = {}
for (course, student) in records:
course_code = course[0]
student_id = student[0]
course_roll_dict.update({course_code:{student_id}})

我的输出是

{'ENG002': {2721815},
'FCOM02': {2113869},
'ECO001': {2721815},
'MTH001': {2923516},
'ENG001': {2113869},
'PHY001': {2949099},
'GEL001': {2113869},
'INF001': {2286481},
'FCOM03': {2923516}}

但这不是我想要的正确输出,我需要成为

{'ECO001': {2923516, 2721815},
'ENG002': {2721815},
'FCOM03': {2923516},
'GEL001': {2113869},
'FCOM02': {2113869},
'PHY001': {2949099},
'ENG001': {2923516, 2113869},
'MTH001': {2923516},
'INF001': {2286481}}

我只是不知道如何给一个键 2 个值,因为有两个相同的键但有两个不同的值(或者你可以说是学生 ID)。我赞成遍历文本文件。如果我打印出类(class)代码和学生 ID,我会得到:

ENG002 2721815
FCOM02 2113869
ECO001 2923516
MTH001 2923516
ECO001 2721815
ENG001 2923516
PHY001 2949099
GEL001 2113869
INF001 2286481
ENG001 2113869
FCOM03 2923516

最佳答案

字典具有您需要的确切功能 - 它是 setdefault。将代码的最后一行更改为:

course_roll_dict.setdefault(course_code, set()).add(student_id)

下面是这行看起来很奇怪的代码的作用。 setdefault 尝试在字典中查找关键字 course_code。如果键不存在,它会将键添加到字典中并使用第二个参数(一个空集)作为值,它也返回。如果键在那里,它只返回值。在任何一种情况下,返回值都是到目前为止已处理的学生集合。然后,您只需将新学生添加到其中即可。

您还可以查看标准库中的类 defaultdict

关于python - 如何将项目分组到存储为字典值的集合中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44223227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com