gpt4 book ai didi

python - 使用python检查字典中是否存在键时出现AttributeError

转载 作者:行者123 更新时间:2023-11-28 21:27:43 26 4
gpt4 key购买 nike

我正在使用 Python 2.7.2+,当试图查看字典是否包含给定的字符串值(名为 func)时,我得到了这个异常:

Traceback (most recent call last):
File "Translator.py", line 125, in <module>
elif type == Parser.C_ARITHMETIC : parseFunc()
File "Translator.py", line 95, in parseFunc
if unary.has_key(func) :
AttributeError: 'function' object has no attribute 'has_key'

这是我定义字典的地方:

binary = {"add":'+', "sub":'-', "and":'&', "or":'|'}
relational = {"eq":"JEQ" , "lt":"JLT", "gt":"JGT"}
unary = {"neg":'-'}

这是引发异常的函数:

def parseFunc():
func = parser.arg1
print func
output.write("//pop to var1" + endLine)
pop(var1)
if unary.has_key(func) : // LINE 95
unary()
return
output.write("//pop to var2" + endLine)
pop(var2)
result = "//"+func + endLine
result += "@" + var1 + endLine
result += "D=M" + endLine
result += "@" + var2 + endLine
output.write(result)
if binary.has_key(func) :
binary()
else : relational()

此外,我尝试将 if unary.has_key(func) 更改为 if func in unary 但后来我得到了

Traceback (most recent call last):
File "Translator.py", line 126, in <module>
elif type == Parser.C_ARITHMETIC : parseFunc()
File "Translator.py", line 95, in parseFunc
if func in unary:
TypeError: argument of type 'function' is not iterable

P.s 我也厌倦了使用 python 3.2

有什么想法吗?谢谢

最佳答案

在 Python 3 中,dict.has_key() 消失了(而且它已经被弃用了很长一段时间)。请改用 x in my_dict

不过,您的问题是另一回事。虽然您的定义显示 unary 应该是一个字典,但回溯显示它实际上是一个函数。因此,在您未显示的代码中的某处,unary 被重新定义。

即使 unary 是字典,您也无法调用它。

关于python - 使用python检查字典中是否存在键时出现AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com