使这种排序方法有效的方法?

时间:2014-04-29 19:35:34

标签: python list dictionary append

list1 = []
list2 = []
list3 = []

elecStorage = []

elective = ["i", "j", "k", "l"]
prereq = ["a", "b", "c", "d", "e", "f", "g", "h"]

dict1 = {
1: SEM1period1, 2: SEM1period2,
3: SEM1period3, 4: SEM1period3,
5: SEM1period5, 6: SEM1period6,
7: SEM1period7, 8: SEM1period8
}

someNumber = 1


for key, dlist in dict1.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:
                    continue
                else:
                    list1.append(index)
                    someNumber += 1
            break

注意:目前只有SEM1period1,SEM1period2和SEM1period3包含任何内容。 SEM1period1 包含

["a", "c", e", "g"]

SEM1period2 包含

["b", "d", "f", "h"]

SEM1period3 包含

["i", "j", "k", "l"]

当此代码运行时,应该保存

["a", "b", "i", "Free Period", "Free Period", "Free Period", "Free Period", "Free Period"]

进入 list1 。而是保存

["a", "b", "i", "j", "k", "l", "Free Period", "Free Period", "Free Period", "Free Period", "Free Period"]

这是为什么?有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

看起来你的问题是一个错字:

dict1 = {
1: SEM1period1, 2: SEM1period2,
3: SEM1period3, 4: SEM1period3,
                         #   ^
                         # should be 4!

另外:虽然您的代码似乎运行正常(从Python 3.3.4开始),但一般情况下我不相信字典中的项目顺序!您假设dict1.items()返回句点1,句点2,句点3 ...但通常字典将以任意(即基本上随机)的顺序返回项目。