【发布时间】:2019-05-23 02:53:47
【问题描述】:
单击save 按钮后,我无法更新字典中的键值对,但我不知道我的代码有什么问题?
这是我的小项目,我想尝试编写代码来创建一个应用程序(供我个人使用),使用Tkinter 设置和获取条目中的数据并保存到 csv 文件。但我一直坚持更新我的字典。我试过让我的 dict 成为一个全局变量,但它仍然会继续从上一次点击中删除旧的键值。在我的试错过程中,有一个错误指出我的 dict 变量未定义。
def Save(self):
self.new_first_name = self.first_name.get()
self.new_last_name = self.last_name.get()
self.new_id = self.id.get()
self.new_age = self.age.get()
self.dirname = "J:/Webcam"
self.new_dict = {}
def create_dict():
global old_dict
if 'old_dict' not in globals():
global old_dict
old_dict = {"ID": None, "First_Name" : None, "Last_Name": None, "Age": None}
else:
pass
return old_dict
create_dict()
self.new_dict['ID'] = self.new_id
self.new_dict['First_Name'] = self.new_first_name
self.new_dict['Last_Name'] = self.new_last_name
self.new_dict['Age'] = self.new_age
old_dict.update(self.new_dict)
# os.chdir(self.dirname)
# w = csv.writer(open("output.csv", "w"))
# for key, val in old_dict.items():
# w.writerow([key, val])
return old_dict
这是我点击“保存”按钮两次后的结果。
{'ID': 'AA', 'First_Name': 'AA', 'Last_Name': 'AA', 'Age': 'AA'}
{'ID': 'BB', 'First_Name': 'BB', 'Last_Name': 'BB', 'Age': 'BB'}
我想要的是这样的:
{'ID': ['AA','BB'], 'First_Name': ['AA','BB'], 'Last_Name': ['AA','BB'], 'Age': ['AA','BB']}
【问题讨论】:
-
Dict 效率不高。我认为 DataFrame 更适合这种数据。
-
谢谢,我会进一步研究。
-
如果你需要,我可以给你一个样品。祝你有美好的一天~!
标签: python python-3.x dictionary tkinter