将对象与python dictionary / hashtable中的键进行比较

时间:2012-09-26 19:10:41

标签: python dictionary hashtable

也许我的头衔可能会产生误导,但让我澄清一下我的问题:

这是一个清单:

chr1:100-200 100 100
chr1:350-500 150 250
chr1:780-880 100 350
chr1:900-950 50  400

所以基本上第一列是坐标范围,第二列是间隔长度(第一列中两个坐标之间的减法),第三列是间隔长度的累积。

现在我有一个数字,比如120.我需要做的是:因为100< 120< 250(将我的对象与密钥进行比较),密钥应指向值“chr1:350-500”; 类似地,如果我的数字是360,那么350< 360< 400,值应为:“chr1:900-950”

希望我已经说清楚了。我想我应该使用字典或散列表来解决问题,但这里涉及将我的对象与键进行比较;我不知道怎么做。

非常感谢

1 个答案:

答案 0 :(得分:2)

实际上,没有。

>>> ranges = ['chr1:100-200', 'chr1:350-500', 'chr1:780-880', 'chr1:900-950']
>>> accums = [100, 250, 350, 400]
>>> ranges[bisect.bisect_left(accums, 120)]
'chr1:350-500'
>>> ranges[bisect.bisect_left(accums, 360)]
'chr1:900-950'