Сравните объект с ключами в словаре / хэш-таблице Python

Возможно, мой заголовок может ввести в заблуждение, но позвольте мне уточнить мой вопрос:

Вот список:

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 ответ

Решение

Вообще-то, нет.

>>> 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'
Другие вопросы по тегам