python - 在python中使用整数元组作为键不起作用
问题描述
我有一本字典,其中存储了一个元组 (x,y) 作为键
但是,当我放置以下条件时,即使元组已经在字典中,它也会返回 true。
if (virtual_box_i, virtual_box_j) not in self.visitid_indices:
break
我确信元组在那里,因为我可以在 self.visitid_indices 中看到它,调试如下:
我在这里做错了什么?
解决方案
您的图像显示为virtual_box_i/j
are 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
如评论中所述,即使键由整数或长整数组成,与评估的比较也会正确。
推荐阅读
- intellij-idea - 无法使用 Subversion 命令行客户端:svn,检测 svn 工作副本时发现错误。修理它
- python - Pandas:向前填充而不填充尾随 NaN
- amazon-web-services - 其他设备类型列,例如 aws cloudfront 中的 CloudFront-Is-Mobile-Viewer
- angular - 如何更新页面并同时以角度 6 加载更新的数据?
- java - 如何使用@NotNull 返回 400 http 状态码?
- vue.js - 使用有什么好处
结束了? - python - 如何使用 Python 创建嵌套的 JSON 对象?
- python - 在 ElasticSerch 中执行“事务”
- c++ - 如何在 Qt C++ 中向自定义控件添加属性?
- php - 如何修改从市场安装的模块?