2013-03-16 209 views
2

我正在为机器人团队编写一个程序,我在竞赛期间收集数据以找到最好的团队以“结盟”。它需要收集大约20个值,并且需要能够通过各种参数列出数据。我已经完成了很多框架,但是好像当我将数据追加到列表中时,它会将所有条目更改为当我追加时。在列表中添加一个字典

举例来说,如果我有

data = [{"teamNumber":1345,"teamName":"Blah"}] 

,并尝试

{"teamNumber":3219,"teamName":"TREAD"} 

数据使用追加()我结束了

data = [{"teamNumber":3219,"teamName":"TREAD"},{"teamNumber":3219,"teamName":"TREAD"}] 

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

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) 

我不知道给出了什么,尽管答案更可能是愚蠢的明显,我看不出找到问题。

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

+0

您简单的例子不显示错误。请再试一次 – Vorsprung 2013-03-16 20:41:25

+0

整个'temp = dataTemplate'这个东西有什么意义?我用'temp = {}'测试了你的代码,它工作得很好。请记住,字典中的键不会(通常;在您的情况下绝对不是)需要在向它们添加数据之前实例化。 – msvalkon 2013-03-16 20:58:43

回答

6

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

temp = dataTemplate 

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

你想

temp = dataTemplate.copy() 
+0

嘿,我知道这真的很简单..感谢您的帮助! – THUNDERGROOVE 2013-03-16 20:49:30