【发布时间】:2016-02-29 19:30:25
【问题描述】:
我已经创建了一个列表:
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]
但是,从这部分代码打印的键和序列不能正确识别最接近的 k 值。我不太确定出了什么问题。我认为这可能与我创建arraynums 列表的方式有关。我使用这个创建了列表:
arraynums = numpy.arange(float(middlevalue) - 0.005, float(middlevalue) + 0.005, 0.001)
编辑:
上面字典的注释:一些值是负数,每个键的输出都是相同的负值...我还使用SortedDict()对字典进行了排序
【问题讨论】:
-
字典未排序。
-
@njzk2 我使用
SortedDict(d2)对字典进行了排序 -
为什么sd前面有'0.3875103'?我的编译器没有运行它。一个 SortedDict 就是这样创建的:stackoverflow.com/a/25988933/2734863
-
你可能会给 SortedDict 一个未排序的字典吗?看起来您可能正在做这里提到的“这不起作用”的事情:code.djangoproject.com/wiki/SortedDict
-
@DirkHaupt 对不起。那是个错误。我已经修复了提供的字典。
标签: python numpy dictionary