使用整数元组作为python中的键无法正常工作

时间:2018-04-30 23:42:20

标签: python dictionary

我有一个字典,我将一个元组(x,y)存储为键

但是,当我放置以下条件时,即使元组已经在字典中,它也会返回true。

            if (virtual_box_i, virtual_box_j) not in self.visitid_indices:
                break

我确信元组在那里,因为我可以在self.visitid_indices中看到它,如下调试:

enter image description here

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您的图片显示状态virtual_box_i/jint64,这可能表示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的比较也能正确评估。