如何识别字典对于提供的输入没有已知值,而不仅仅是导致错误(KeyError)Python 3.6



我正在使用Python字典将DNA碱基读取到密码子中,但是希望程序识别是否输入了废话。目前发生的所有情况是使用类似的东西时出现一个关键错误

"密码子 += cod[F[x]]">

有没有办法在碱基字符串(AGCTATATCAT)(例如)中搜索字典中找不到的字符串?例如,如果其他不是 ACGT 的角色在其中,我将如何检测到这一点?

谢谢

您可以通过执行以下操作来检查字符串中的所有字符是否都在给定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"

验证字符串中的每个字符是否为有效基数的一种快速方法是使用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'}

相关内容

最新更新