2013-04-03 21 views
0

我需要將現有值轉換爲類中的字典,而不使用__dict__函數。下面的細節。Python:將現有值轉換爲Class中的字典,而不使用__dict__


電流輸出看起來像下面(總記錄的只有一部分,這只是舉例):

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 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__函數。

將每個學生的現有值添加到字典中,然後添加允許添加額外課程的成績對:成績對。 就創建詞典而言,文件中的數據已經處於課程中(關鍵):成績(值)對,因此構建詞典應該相當容易。只需使用split獲取對,然後再獲取這兩個部分並構建字典。 因此,對於每個學生,在初始化函數(__init__)函數中創建一個空字典,然後拆分課程:對成績進行配對並使用成績添加方法將其添加到學生對象。 然後寫一些代碼,使用添加,更改和檢索方法。」

我仍然無法弄清楚如何創建這樣的字典。

+2

首先,'__dict__'是一本字典,而不是一個功能;'dict'是一個函數(A型)其次,你有什麼認爲你不能用其中之一? – jwodder

+0

我不能因爲那是要求之一。 –

+2

什麼部分你有麻煩嗎?看起來你的任務很清楚地說明了從字符串中創建字典的步驟:使用split來獲得對,然後再次分離split到key/value中,然後添加到字典中。 –

回答

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'} 
+0

如何將INTO添加到Student Class中?如何使它成爲課堂中的一個功能?它應該對self.record做些事情 –