Python .对分在字典中找不到最接近的值

Python .对分在字典中找不到最接近的值,python,numpy,dictionary,Python,Numpy,Dictionary,我已经创建了一个列表: arraynums = [ 0.3888553 0.3898553 0.3908553 0.3918553 0.3928553 0.3938553 0.3948553 0.3958553 0.3968553 0.3978553 0.3988553] 以及按键值排序的字典(这是字典的一部分): 我一直在使用此代码查找与上面列表中列出的值最接近的值: for k in arraynums: index = sd.bisect(k) k

我已经创建了一个列表:

arraynums = [ 0.3888553  0.3898553  0.3908553  0.3918553  0.3928553  0.3938553
  0.3948553  0.3958553  0.3968553  0.3978553  0.3988553]
以及按键值排序的字典(这是字典的一部分):

我一直在使用此代码查找与上面列表中列出的值最接近的值:

for k  in arraynums:
    index = sd.bisect(k)
    key = sd.iloc[index]
    seq = sd[key]
但是,从代码的这一部分打印的key和seq不能正确识别k的最接近值。我不太确定出了什么问题。我想这可能与我创建
arraynums
列表的方式有关。我使用以下方法创建了列表:

arraynums = numpy.arange(float(middlevalue) - 0.005, float(middlevalue) + 0.005, 0.001)
编辑: 上面字典的一个注释:一些值是负值,每个键的输出都是相同的负值。。。除了类型不匹配(
sd
键是str,
arraynums
元素是float),我还使用了
sortedct()对字典进行了排序,一种有效的方法是:

keys=list(zip(sd.items())) 
values= array([x[0] for x in sd.values()])
indices=np.searchsorted(sorted(sd.keys()),arraynums)

In [390]: indices
Out[390]: array([ 3,  6, 13, 16, 21, 23, 26, 31, 31, 31, 31], dtype=int64)

索引
表示arraynums[0]在键[2]和键[3]之间,以此类推(请参阅)。最后一个值存在一个问题:可以通过选择其他边界来避免。您现在需要比较最近的字典并得出结论。

字典没有排序。@njzk2我使用
sorteddct(d2)对字典排序。
为什么sd前面有“0.3875103”?我的编译器没有运行它。SortedDict毕竟是这样创建的:您是否给SortedDict一个未排序的字典?看起来你可能在做这里提到的“这不起作用”的事情:@DirkHaupt,对不起。那是个错误。我已经修好了提供的字典。太好了。非常感谢。这是有道理的:)
keys=list(zip(sd.items())) 
values= array([x[0] for x in sd.values()])
indices=np.searchsorted(sorted(sd.keys()),arraynums)

In [390]: indices
Out[390]: array([ 3,  6, 13, 16, 21, 23, 26, 31, 31, 31, 31], dtype=int64)