Python代码在需要时没有附加“空闲时间”

Python代码在需要时没有附加“空闲时间”,python,list,dictionary,append,Python,List,Dictionary,Append,注:选修课和Prereq都包含字符串,比如Prereq中的微积分1,或者选修课中的天文学。dict2中的变量是包含类的列表,与函数先前调用的课堂名称相同 dict2.items中以for key,dlist开头的代码段应该做的是搜索第一个列表的元素,首先检查是否有列表,如果没有,然后在列表中追加空闲时间。然后,它应该检查prereq中是否存在列表中的任何元素,最后,如果没有,则将选修课中的内容附加到其中。因为如果它通过了第一个条件,可以安全地假设至少有一个选项。然后循环并对下一个元素列表执行相同

注:选修课和Prereq都包含字符串,比如Prereq中的微积分1,或者选修课中的天文学。dict2中的变量是包含类的列表,与函数先前调用的课堂名称相同

dict2.items中以for key,dlist开头的代码段应该做的是搜索第一个列表的元素,首先检查是否有列表,如果没有,然后在列表中追加空闲时间。然后,它应该检查prereq中是否存在列表中的任何元素,最后,如果没有,则将选修课中的内容附加到其中。因为如果它通过了第一个条件,可以安全地假设至少有一个选项。然后循环并对下一个元素列表执行相同的操作

问题是,除非所有列表都不包含任何内容,否则它不会附加“空闲时间”,我也不知道为什么


想法?

在你的SEM*周期*中,可能会返回一个空列表,而不是一个都没有。检查空列表“[]”的正确方法是“if list1=[]”或“if lenlist1==0”


None是占位符,表示不存在的对象。[]是一个有效的列表对象,它只是在列表中没有条目。”如果not foo只是检查None,而不是空列表。

您应该验证SEM2period变量的内容,没有这些变量很难诊断。我没有遵循你的逻辑,但这实际上只是你感兴趣的循环中的第一个块,是吗?您可能有一个包含空列表的列表,也许?这会打乱你的逻辑:

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
给你

d2 = {1:['elec'], 2:[]}

for key, dlist in d2.items():
    if not dlist:
        print 'empty!'
    else:
        print dlist
d2 = {1:['elec'], 2:[[]]}

for key, dlist in d2.items():
    if not dlist:
        print 'empty!'
    else:
        print dlist
但是

给你

d2 = {1:['elec'], 2:[]}

for key, dlist in d2.items():
    if not dlist:
        print 'empty!'
    else:
        print dlist
d2 = {1:['elec'], 2:[[]]}

for key, dlist in d2.items():
    if not dlist:
        print 'empty!'
    else:
        print dlist

没有列表时,SEM2periodX具体是什么类型的对象。是不是一个都没有?应该是一个都没有,是的。你能证实那个SEM吗?句号?在至少有一个非空列表的情况下,是否真的没有,也不像是一个空列表?“[print x for x in dict2.values]”应该有助于调试。噢,见鬼,它返回为[],而不是无。但即使它返回为[],也不重要,对吗?