我有一个字典,我将一个元组(x,y)存储为键
但是,当我放置以下条件时,即使元组已经在字典中,它也会返回true。
if (virtual_box_i, virtual_box_j) not in self.visitid_indices:
break
我确信元组在那里,因为我可以在self.visitid_indices中看到它,如下调试:
我在这里做错了什么?
答案 0 :(得分:0)
您的图片显示状态virtual_box_i/j
为int64
,这可能表示NumPy类型。 NumPy类型整数(不幸或不幸)与普通整数相同。尝试使用
(int(virtual_box_i), int(virtual_box_j))
相反,将(假设的)NumPy整数显式转换为标准的Python整数。
请注意,使用Python 2.7.13和NumPy 1.13.1,我实际上无法重现该问题:
Python 2.7.13 (default, Feb 1 2017, 17:19:54)
[GCC 5.4.1 20160904] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {(1, 2L): 'test'}
>>> x = 1
>>> y = 2L
>>> (x, y) in d
True
>>> (x, 2) in d
True
>>> import numpy as np
>>> a = np.int64(1)
>>> b = np.int64(2)
>>> (a, b) in d
True
>>> np.__version__
'1.13.1'
正如评论中所提到的,即使密钥由整数或长整数组成,与np.int64
的比较也能正确评估。