我遇到了一件非常奇怪的事情,两个明显相等的列表被Python认为是不相等的。从这里您可以看到我正在使用的字典的一个元素的IPython控制台输出:
In [251]: saveDict['data']['hpSH']['manifold_type']
Out[251]: ['duct', 'pipe']
然后,当我检查这个dictionary元素是否等于list['duct','pipe']时,它说它不是:
In [252]: ['duct', 'pipe'] is saveDict['data']['hpSH']['manifold_type']
Out[252]: False
但是,使用“==”而不是“is”会在控制台中产生一个真正的输出。你知道吗
我发现这一点是因为它弄乱了代码的其他部分,并且使用saveDict['data']['hpSH']['manifold\u type']进行的计算与使用['duct','pipe']时不同。为了给你更多的背景故事,saveDict来自cPickle制作的一个保存的文件。以下是有关我工作环境的更多信息:
Windows 10, Python 2.7.12::Anaconda 4.1.1(32位), Spyder 2集成开发环境
您应该比较列表是否与
==
相等,而不是is
is
操作符用于比较Python运行时中的对象id;它从字面上问,这两个id是否是同一个对象。观察这个例子:检查ids有助于:
注意:在同一个列表上对
id
的两个调用(相同的值)产生不同的id,因为它们是不同的对象。你知道吗有关更多背景信息,请参见this SO discussion
相关问题 更多 >
编程相关推荐