2012-09-26 97 views
0

也許我的標題可能會產生誤導,但讓我澄清我的問題:比較與Python字典的關鍵對象/哈希表

這裏有一個列表:

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

所以基本上第一列是座標範圍,第二列是區間長度(從第一列開始的兩個座標之間的減法),第三列是區間長度的累加。

現在我有一個數字,說120是什麼,我需要做的是:因爲100 250(以比較我與主要對象),並重點應指向值「CHR 1:350-500 「; 同樣,如果我的號碼是360,因爲350 400,值應該是:「chr1:900-950」

希望我已經說清楚了。我想我應該使用字典或哈希表來解決問題,但這裏涉及比較我的對象與鍵;我不知道該怎麼做。

非常感謝

+0

你到目前爲止寫了什麼代碼? –

+0

不......因爲我沒有線索怎麼做;我從來沒有遇到過這樣的問題。 – user815408

回答

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' 
+0

作品很神奇,非常感謝! – user815408