我目前在採取一些學校的計算機科學課程,並已經來到了一個死衚衕,並需要一點點幫助的屬性列表。就像標題所說的那樣,我需要從一個文件中創建一個Class對象列表,其中包含一個沒有添加到列表中的副本的對象,我可以用python set()
成功完成此操作,但顯然這是不允許的任務,我嘗試了各種其他方法,但似乎無法使用一套工作。我相信這個任務的重點是比較Python中的數據結構,並使用最慢的方法,因爲它也必須定時。我的代碼將使用set()
將提供。創建類的對象從一個文件中,沒有重複的對象
import time
class Students:
def __init__(self, LName, FName, ssn, email, age):
self.LName = LName
self.FName = FName
self.ssn = ssn
self.email = email
self.age = age
def getssn(self):
return self.ssn
def main():
t1 = time.time()
f = open('InsertNames.txt', 'r')
studentlist = []
seen = set()
for line in f:
parsed = line.split(' ')
parsed = [i.strip() for i in parsed]
if parsed[2] not in seen:
studentlist.append(Students(parsed[0], parsed[1], parsed[2], parsed[3], parsed[4]))
seen.add(parsed[2])
else:
print(parsed[2], 'already in list, not added')
f.close()
print('final list length: ', len(studentlist))
t2 = time.time()
print('time = ', t2-t1)
main()
需要注意的是,唯一需要檢查的重複項是那些.ssn屬性,並且不應將重複項添加到列表中。有沒有辦法在添加之前通過該特定屬性檢查列表中已有的內容?
編輯:忘記提到只有1允許在內存中的列表。
考慮寫'學生(*解析)'有隱含檢查字段數的優勢。 (並命名爲'Student',因爲它只是一個。) –
我喜歡'(* parsed)'技巧!感謝那! – deadsightsx