当我添加到我的词典中的列表时,它实际上没有添加到列表中?蟒蛇

时间:2015-03-08 15:07:54

标签: python list dictionary pickle

所以,我创建了一个名为groupA的字典,我希望保留名字和多个分数。分数来自一个名为count的变量,它取决于我的代码的另一部分的测验。我的代码为一个键添加了多个值,但是我希望它们都在一个列表中,不管出于什么原因都不会发生。这是我的代码:

     name = input("What is your name? ")
    while name.isdigit():
        print ("That's not a name.")
        name = input("What is your name? ")
    group = input("Which group are you in; A, B or C: ")
    if group == "A":
         if name in groupA:
             groupA = pickle.load(open("groupA.p", "rb"))
             score = [count] 
             groupA[name].append(score)
             numberofvalues = len(score)
             if numberofvalues > 3:
                 print("Deleting oldest score.")
                 score.pop(1)
                 print(score)
             pickle.dump(groupA, open("groupA.p", "wb"))
         else:
            score = [count] 
            groupA[name] = [score]
            pickle.dump(groupA, open("groupA.p", "wb"))

我希望代码的这一部分要么添加到列表中的值,如果列表中有三个以上的值,请删除第一个,然后如果没有该字典的条目那个名字;创建一个条目,但它没有这样做。有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您目前正在做的事情相当于:

groupA[name].append([count])  # this appends a list to the list

这样做

groupA[name].append(count)  # count must be single value

在其他部分

groupA[name] = [count]  # creating new single-element list

此外,len(scores)将始终为1.将其替换为:

numberofvalues = len(groupA[name])