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 而另一个不包含),而元组是相等的。