将dict附加到列表中

THU*_*OVE 2 python python-2.7

我正在为机器人团队编写程序,我在竞争期间收集数据,找到最佳团队与"联盟".它需要收集大约20个值,并且需要能够通过各种参数列出数据.我已经完成了很多框架,但似乎当我将数据附加到列表时,它会在我追加时将所有条目更改为.

例如,如果我有

data = [{"teamNumber":1345,"teamName":"Blah"}]
Run Code Online (Sandbox Code Playgroud)

并尝试追加

{"teamNumber":3219,"teamName":"TREAD"}
Run Code Online (Sandbox Code Playgroud)

使用append()来获取数据我最终得到了

data = [{"teamNumber":3219,"teamName":"TREAD"},{"teamNumber":3219,"teamName":"TREAD"}]
Run Code Online (Sandbox Code Playgroud)

目前我们正在使用此功能添加数据(它有大部分不必要的"肉"修剪)

def inputTeamData(): 
    global data
    clear()
    temp = dataTemplate

    temp["teamNumber"] = question("Team Number?: ")
    temp["teamName"] = question("Team Name?: ")
    temp["foundingSeason"] = question("Founding Season?: ")

    save = question("Is the above data correct?(y/n): ")


    if save.lower() == "y":
        try:
            data.append(temp)
        except ValueError:
            print "ValueError. You gave me the wrong data types"
            sleep(1)

            else:
                print "Not saved"
                sleep(.8)
Run Code Online (Sandbox Code Playgroud)

我不知道是什么给了,即使答案更可能是愚蠢的显而易见我无法找到问题.

无论如何,非常感谢任何可以帮助我的人的建议!

Joc*_*zel 6

您需要首先学习一些Python基础知识:

temp = dataTemplate
Run Code Online (Sandbox Code Playgroud)

不会复制dataTemplate到新变量temp!相反,它将别名"temp"赋予您名为"dataTemplate"的原始字典.每次编写时都会修改相同的原始字典,temp[ .. ] =因为"temp"只是"dataTemplate"的别名.

你要

temp = dataTemplate.copy()
Run Code Online (Sandbox Code Playgroud)