literal_eval 和 Python 中的布尔逻辑
literal_eval and boolean Logic in Python
>>> from ast import literal_eval
>>> H = {"('a','b')":1}
>>> x = ('a','b')
>>> str(x)
"('a', 'b')"
>>> list(H.keys())[0]
"('a','b')"
>>> str(x) == list(H.keys())[0]
False
为什么我会收到虚假陈述?但是,当我这样做时
>>> x == literal_eval(list(H.keys())[0])
True
我得到一个正确的陈述。
在我的测试中,str(x)
是 "('a', 'b')"
。你注意到逗号后面的 space 了吗?
这足以解释为什么字符串不同(一个包含 space 而另一个不包含),而元组是相等的。
>>> from ast import literal_eval
>>> H = {"('a','b')":1}
>>> x = ('a','b')
>>> str(x)
"('a', 'b')"
>>> list(H.keys())[0]
"('a','b')"
>>> str(x) == list(H.keys())[0]
False
为什么我会收到虚假陈述?但是,当我这样做时
>>> x == literal_eval(list(H.keys())[0])
True
我得到一个正确的陈述。
在我的测试中,str(x)
是 "('a', 'b')"
。你注意到逗号后面的 space 了吗?
这足以解释为什么字符串不同(一个包含 space 而另一个不包含),而元组是相等的。