Python 无法引用使用“创建”创建的变量;vars();从字典里
我的任务是创建一个漫画书店的库存管理系统,作为学校的python评估。我现在有一本字典,里面有漫画的名字和从CSV文件导入的漫画的股票价值Python 无法引用使用“创建”创建的变量;vars();从字典里,python,python-3.x,dictionary,tkinter,Python,Python 3.x,Dictionary,Tkinter,我的任务是创建一个漫画书店的库存管理系统,作为学校的python评估。我现在有一本字典,里面有漫画的名字和从CSV文件导入的漫画的股票价值 comic_books = {} with open('data.csv', 'r+', newline='') as csvfile: csvreader = csv.reader(csvfile) for row in csvreader: comic_books[row[0]] = int(row[1]) 程序要
comic_books = {}
with open('data.csv', 'r+', newline='') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
comic_books[row[0]] = int(row[1])
程序要求之一是确保用户可以一次看到所有漫画的库存。为此,我只需使用vars()
函数为字典中的每个键创建两个标签小部件(以及一些格式设置,以确保漫画名称中的空格等不会引起冲突)
我最终得到了以下结果,效果如预期:
基本上,我的问题是,我稍后在代码中引用其中一个变量(具体来说,这是用户出售漫画时运行的代码的一部分,以便用新值更新标签)
这不起作用,每当程序尝试运行上面的行时,我都会出现以下错误:
File "C:\Users\XXX\Desktop\pythonAsessment2\test.py", line 114, in sellProcess
vars()[item.replace(" ", "") + "Stock"].config(text=comic_books[item])
KeyError: 'Comic2Stock'
谢谢
我现在不知道该怎么办
首先要做的是停止使用vars()
创建动态变量。这几乎从来都不是一个好主意,因为它会使代码变得不必要的复杂、难以编写和调试
如果要按名称引用单个项目,请使用字典。它看起来像这样:
labels = {}
for item in comic_books:
key= "{} Stock".format(item)
labels[key] = Label(main, text=item+":")
labels[key].grid(column=1, row=itteration, padx=5)
...
我想你知道你的电子邮件地址用于你的其他帐户。。。如果是这样的话,你可以向so发送请求。你为什么还要在这里使用
vars
?不应使用动态创建的变量。使用容器,如dict
注意,vars()
要么返回全局名称空间,即globals()
,要么返回本地名称空间(如果在函数中),即locals()
。对globals()。不要使用动态变量。使用口述。你已经在使用口述了,只是那些不能按你所希望的方式工作的口述。谢谢你的回复。我现在在学校,我的数字技术课即将结束,所以我会在回家后试一试。再次感谢你这么晚才给你回电话,周末有点忙。已标记为“已回答”。再次感谢您的回复(:
File "C:\Users\XXX\Desktop\pythonAsessment2\test.py", line 114, in sellProcess
vars()[item.replace(" ", "") + "Stock"].config(text=comic_books[item])
KeyError: 'Comic2Stock'
labels = {}
for item in comic_books:
key= "{} Stock".format(item)
labels[key] = Label(main, text=item+":")
labels[key].grid(column=1, row=itteration, padx=5)
...