我試着去ITER在我的字典期運用這樣的:字典迭代與ITER FUNC
it = iter(db)
for i in it:
print(i)
但是當我運行該發生的事情是印刷字典作爲一個整體而不是上的按鍵的無限循環字典
我用這個作爲輸入:
ppl = Course(123, 'Principles of Programming Languages')
os = Course(133, 'Operating Systems')
db = DB()
db.setCourse(ppl, 'SE', 2, 1)
db.setCourse(os, 'SE', 3, 1)
和我的輸出是:
{123: ('Principles of Programming Languages', 'SE', 2, 1), 133: ('Operating Systems', 'SE', 3, 1)}
{123: ('Principles of Programming Languages', 'SE', 2, 1), 133: ('Operating Systems', 'SE', 3, 1)}
{123: ('Principles of Programming Languages', 'SE', 2, 1), 133: ('Operating Systems', 'SE', 3, 1)}
在一個永無止境的循環中。 即時通訊很確定我的下一個是搞砸了。
編輯 數據庫代碼很長,這是它的ITER部分:
class DB()
DataBase = {}
def __iter__(self):
return iter(self.DataBase)
def getCourse(self,cnum):
for i in self.DataBase:
if i == cnum:
return self.DataBase[i]
def getCoursesByDept(self,dept):
for key, value in self.DataBase.items():
if dept in value:
return self.DataBase[key]
def getCoursesByDeptYear(self,dept,year):
for key, value in self.DataBase.items():
if dept in value and year in value:
return self.DataBase[key]
def getCoursesByDeptYearSem(self,dept,year,semester):
for key, value in self.DataBase.items():
if dept in value and year in value and semester in value:
return self.DataBase[key]
def setCourse(self,Course,dept,year,semester):
self.DataBase[Course.cnum] = (Course.name,dept,year,semester)
def removeCourse(self,cnum):
for i in self.DataBase.keys():
if i == cnum:
del self.DataBase[i]
正確的輸出是:
Course 123: Principles of Programming Languages
Course 133: Operating Systems
你忘了分享'DB'類的代碼。 –
對不起,我無法重現該問題。另外,你不需要單獨的'iter' – thefourtheye
預期的結果是什麼? – bereal