【问题标题】:When i add to the list in my dictionary, it doesn't actually add to the list? python当我添加到字典中的列表时,它实际上并没有添加到列表中? Python
【发布时间】:2015-03-08 15:07:54
【问题描述】:

所以,我制作了一个名为 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"))

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

【问题讨论】:

    标签: python list dictionary pickle


    【解决方案1】:

    你当前所做的相当于:

    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])
    

    【讨论】:

    • 输出现在看起来像这样:{'Georgia': [[10, 9, 5], 5]} 我应该如何解决这个问题?
    • count 总是一个值吗?尝试清除您的腌制文件并从头开始。
    • 我仍然得到一个奇怪的输出 {'Georgia': [[6], 6]} 是的,它总是一个值
    • 你确定你在做.append(count)groupA[name] = [count]吗?您可以发布修改后的代码吗?
    • 啊,我忘记添加 groupA[name] = count,很抱歉给您添麻烦,但感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    相关资源
    最近更新 更多