有没有更简单的方法来编写包含多个组合框和嵌套字典的代码,并且还避免了KeyError?

我对Python相当陌生,花了很多时间后,我设法不用问一个问题就能完成这项工作,但是,显然,它可以被更好地重写,并且可以摆脱这种情况{ {1}}。直到我从每个组合框中选择了一个项目后,关键错误才会出现(并使该功能停止运行),然后由于我在该函数中的数学运算,该错误会继续发生,但是我无法找出另一种方法来解决该问题,并且使代码更紧凑。我敢肯定有办法,但是我绝对可以在正确的方向使用指针,谢谢! 这是我的程序的一个更简单的演示版本:

KeyError: ''

目标只是从每个组合框中选择一个并取其指定值,然后将该整数添加到另一个组合中以得出总数,同时解决关键错误问题并使代码更易读和易于编辑。我想放多个盒子,每个盒子有多个物品,用这种方法会很混乱,在此先感谢您!

myxiaoyun2007 回答:有没有更简单的方法来编写包含多个组合框和嵌套字典的代码,并且还避免了KeyError?

问题是tk.StringVar get()方法调用在没有任何内容时将返回""。一个简单的解决方法是在两个与该“空”键匹配的字典中添加一个条目,并为它们提供一些关联的值,以便在相应的Combobox中未选择任何内容(即零)时使用:>

#DICTIONARIES#
weapondict = {"": {"atk":0,"def":0},# Use when nothing is selected.
              "Bronze Sword": {"atk":32,"def":4},"Iron Sword": {"atk":47,"def":5}}
shielddict = {"": {"atk":0,# Use when nothing is selected.
              "Bronze Shield": {"atk":3,"def":10},"Iron Shield": {"atk":5,"def":27}}

一种替代方法是修改selected()函数,以在尝试使用它们之前检查weaponvar.get()shieldvar.get()返回的值是否是相应字典中的键。如果不是,则可以提供abcd的一些默认值。

这是完全可行的,但是更改两个字典似乎对IMO来说要容易得多。

还请注意如何定义两个嵌套字典。我发现在多行代码中这样做更具可读性。

本文链接:https://www.f2er.com/3120408.html

大家都在问