0

我需要在不使用 __dict__ 函数的情况下将现有值转换为 Class 中的字典。详情如下。


当前输出如下所示(仅占总记录的一部分,这只是示例):

Abair, 131 Laconia St, 7, PHYS271:C|CHEM271:C|MUSC101:A|ANTA321:B
Babeau, 60 Parker St, 8, GERM111:B|COM432:A|ENGR251:C
Babin, 44 Griggs Rd, 9, MECH312:D|MATH142C|GEOG108:B

我需要的是课程等级对的字典格式的输出:

Babeau, 60 Parker St, 8, {GERM111:B, COM432:A, ENGR251:C}

我的课在下面。Class Student 是 Class Person 的子类。

class Person(object):

    def __init__(self, name, address):
        self.name    = name
        self.address = address

    def get_name(self):
        return self.name

    def get_address(self):
        return self.address

    def greet(self):
        print "Hello, my name is " + self.name

    def print_person(self):
        print self.name, self.address

class Student(Person):

    next_id = 0          # A unique ID for each student

    def __init__(self, name, address, record):
        Person.__init__(self, name, address)
        Student.next_id += 1
        self.id = Student.next_id   
        self.record = record

    def get_id(self):
        return self.id

    def add_to_record(self, semester_grades):
        self.record += semester_grades

    def get_record(self):
        return self.record

    def greet(self):
        print "How's it going? I'm " + self.name


    def print_person(self):
        grades = str(self.record)
        print "%s, %s, %i, %s" % (self.name, self.address, self.id, grades)

创建字典的说明如下。我不认为我可以使用 __dict__ 功能。

将现有值添加到每个学生的字典中,然后有代码允许添加额外的 course:grade 对。至于创建字典,文件中的数据已经在 course (key):grade(value) 对中,因此构建字典应该相当容易。只需使用 split 获取对,然后再次获取两个部分并构建字典。因此,对于每个学生,在初始化程序 (__init__) 函数中创建一个空字典,然后拆分 course:grade 对并使用成绩添加方法将它们添加到学生对象中。然后编写一些代码来使用添加、更改和检索方法。”

我仍然无法弄清楚如何创建这样的字典。

4

1 回答 1

0

假设您想将课程/等级字符串拆分为一个字典,您可以这样做:

s = "PHYS271:C|CHEM271:C|MUSC101:A|ANTA321:B"
d = dict(x.split(':') for x in s.split('|'))

>>> d
{'CHEM271': 'C', 'MUSC101': 'A', 'PHYS271': 'C', 'ANTA321': 'B'}
于 2013-04-03T03:50:51.827 回答