Python 即使存在密钥,也会出现密钥错误

Python 即使存在密钥,也会出现密钥错误,python,numpy,dictionary,Python,Numpy,Dictionary,这很奇怪,虽然我可以看到钥匙存在,但它仍然给我一个错误: import numpy as np stim_end_time = 4000 bin_times = np.arange(0,stim_end_time+100,0.025) time_to_fr = {bin_times[i]:0 for i in range(len(bin_times[:-1]))} print(0.075 in time_to_fr) print(0.075 in time_to_fr.keys()) print

这很奇怪,虽然我可以看到钥匙存在,但它仍然给我一个错误:

import numpy as np
stim_end_time = 4000
bin_times = np.arange(0,stim_end_time+100,0.025)
time_to_fr = {bin_times[i]:0 for i in range(len(bin_times[:-1]))}
print(0.075 in time_to_fr)
print(0.075 in time_to_fr.keys())
print(np.sort(time_to_fr.keys())[:10])
time_to_fr[0.075]

False
False
[0.    0.025 0.05  0.075 0.1   0.125 0.15  0.175 0.2   0.225]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-3-d4c6a4c93742> in <module>()
      6 print(0.075 in time_to_fr.keys())
      7 print(np.sort(time_to_fr.keys())[:10])
----> 8 time_to_fr[0.075]

KeyError: 0.075
将numpy导入为np
刺激结束时间=4000
bin_times=np.arange(0,刺激结束时间+100,0.025)
time_to_fr={bin_times[i]:0表示范围内的i(len(bin_times[:-1]))
打印(0.075准时到)
打印(时间为0.075到帧键()
打印(np.sort(time_to_fr.keys())[:10])
时间到频率[0.075]
错误的
错误的
[0.    0.025 0.05  0.075 0.1   0.125 0.15  0.175 0.2   0.225]
---------------------------------------------------------------------------
KeyError回溯(最近一次呼叫最后一次)
在()
6次打印(0.075次打印到fr.keys())
7打印(np.sort(time_to_fr.keys())[:10])
---->8时间到频率[0.075]
键错误:0.075

您需要对浮点值进行四舍五入:

import numpy as np

stim_end_time = 4000
bin_times = np.arange(0, stim_end_time + 100, 0.025)
time_to_fr = {np.round(bin_times[i], 4) : 0 for i in range(len(bin_times[:-1]))}
print(0.0750 in time_to_fr)
print(0.0750 in time_to_fr.keys())
print(time_to_fr[0.0750])
输出

True
True
0

请参阅。

您依靠浮点数来打印精确的表示形式。他们没有。作为字典键的浮点数充满了困难,尤其是在生成浮点数时。