【发布时间】:2014-06-18 15:40:56
【问题描述】:
list1 = []
elective = []
prereq = []
someNumber = 1
dict2 = {
1: SEM2period1, 2: SEM2period2,
2: SEM2period3, 4: SEM2period4,
5: SEM2period5, 6: SEM2period6,
7: SEM2period7, 8: SEM2period8
}
for key, dlist in dict2.items():
if not dlist:
list1.append("Free Period")
someNumber += 1
continue
for item in dlist:
if item in list1:
continue
elif item in elective:
elecStorage.append(item)
elif item in prereq:
list1.append(item)
someNumber += 1
break
if someNumber > len(list1):
for index in elecStorage:
if index in list1:
break
else:
list1.append(index)
someNumber += 1
elecStorage[:] = []
break
注意:Electives 和 Prereq 都包含诸如“Calculus 1”(用于 prereq)或“Astronomy”(用于选修课)之类的字符串。dict2 中的变量是包含类(如课堂)名称的列表,这些名称之前由函数。
以“for key, dlist in dict2.items()”开头的 sn-p 应该做的是搜索第一个列表的元素,首先检查是否有列表,如果没有然后将“免费期”附加到列表中。然后它应该检查列表中的任何元素是否存在于 prereq 中,最后如果不存在,则从选修课中附加一些内容。 (因为如果它超过了第一个条件,可以肯定地假设至少有一个选修课。)然后循环返回并对下一个元素列表执行相同的操作。
问题是,除非所有列表都不包含任何内容,否则它不会附加“免费期”,我不知道为什么。
想法?
【问题讨论】:
-
没有列表的时候,SEM2periodX具体是什么类型的对象。是“无”之类的吗?
-
不会,是的。
-
你能验证那个 SEM 吗?在至少有一个非空列表的情况下,真的是 None,而不是像一个空列表? '[print x for x in dict2.values()]' 应该有助于调试。
-
哎呀,它返回为 [],而不是 None。
-
但即使它以 [] 的形式返回也没关系,对吗?
标签: python list dictionary append