gpt4 book ai didi

python - .bisect 在字典中找不到最接近的值

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:00 25 4
gpt4 key购买 nike

我创建了一个列表:

arraynums = [ 0.3888553  0.3898553  0.3908553  0.3918553  0.3928553  0.3938553
0.3948553 0.3958553 0.3968553 0.3978553 0.3988553]

以及一个按键值排序的字典(这是字典的一部分):

sd =({'0.3880434': ['GGATCG'], '0.3883449': ['TTCACG'], '0.388449': ['ATGGCG'], '0.3890966': ['ACTCGC'], '0.3893325': ['GTGGAT'], '0.3893478': ['GATACG'], '0.3900749': ['CAGAAG'], '0.3900875': ['CGAGAG'], '0.3900915': ['ATCGGG'], '0.3901032': ['CACCGG'], '0.3901743': ['AAAGAC'], '0.3906361': ['TACGGC'], '0.390682': ['CCATCG'], '0.3909258': ['GGATGA'], '0.3910728': ['AAGATA'], '0.391648': ['GCAACG'], '0.3919125': ['AGGACT', 'GATCGC'], '0.3921844': ['AGAGAA'], '0.3922956': ['CGGGAA'], '0.3927617': ['ATGGAA'], '0.3927763': ['TTGTCG'], '0.3928683': ['ACAGAC'], '0.39309': ['CGCGCT'], '0.3938553': ['AGGACG'], '0.3940998': ['AAGAGC'], '0.3941768': ['GTCGGA'], '0.394966': ['CGTTCC'], '0.395116': ['TGGAAG'], '0.3954179': ['CCGTCC'], '0.3955623': ['AATCGC'], '0.3956923': ['GGACGG']})

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

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)

编辑:上面字典的注释:有些值为负数,每个键的输出都是相同的负值...我还使用 SortedDict()

对字典进行排序

最佳答案

除了类型不匹配(sd 键是 str 且 arraynums 元素是 float)之外,一种有效的方法可以是:

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)

indices 表示 arraynums[0] 位于keys[2] 和keys[3] 之间,依此类推(参见 searchsorted )。最后一个值存在一个问题:可以通过其他边界选择来避免。您现在必须比较最接近的并得出结论。

关于python - .bisect 在字典中找不到最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com