Как распознать, что словарь не имеет известного значения для предоставленного ввода, а не просто вызывает ошибку (KeyError) Python 3.6 - PullRequest
0 голосов
/ 06 мая 2018

Я использую словарь Python для считывания основ ДНК в кодоны, однако хочу, чтобы программа распознала, если в это введена чепуха. В настоящее время все, что происходит, - это ошибка ключа при использовании чего-то вроде

"кодон + = треска [F [x]]"

Есть ли способ поиска строки баз (например, AGCTATATCAT) для строк, не найденных в словаре? Например, если бы в нем были другие символы, не являющиеся ACGT, как бы я это обнаружил?

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Быстрый способ проверить, что каждый символ в строке является допустимой базой, - это использовать метод set.issuperset. Например,

valid_bases = set('ACGT')

for s in ('AGCTAT', 'ATCQAT'):
    print(s, valid_bases.issuperset(s))

выход

AGCTAT True
ATCQAT False

Если вы хотите идентифицировать недопустимые символы, вы можете использовать установить разницу :

valid_bases = set('ACGT')

for s in ('AGCTAT', 'ATCQAT', 'ATCQAZT'):
    bad = set(s) - valid_bases
    print(s, bad or "ok")

выход

AGCTAT ok
ATCQAT {'Q'}
ATCQAZT {'Z', 'Q'}
0 голосов
/ 06 мая 2018

Вы можете проверить, находятся ли все символы в строке в данном set, выполнив следующие действия:

if set(string).difference(set("AGCT")):
    # There are characters other then 'AGCT' in string
else:
    # All characters in the string are one of "AGCT"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...