Python实现DNA转RNA替换T为U时报dict不可调用如何解决?
报错原因
- Python中字典的取值语法是
字典[键]或者字典.get(键, 默认值),你代码中使用圆括号base_change(n,n)的写法属于函数调用语法,字典不是可调用对象,因此触发'dict' object is not callable报错。 - 除此之外你的代码还有两个可优化点:
- 不需要额外调用
upper()方法,你已经在字典中对大小写t都做了映射 - 直接访问
base_change[n]的话,如果输入的碱基是A/C/G等不在字典键中的字符,会抛出KeyError,需要用get方法设置默认返回值
- 不需要额外调用
修正后的代码
方案1:基于原有逻辑修改
def transcribe_dna_to_rna(s): base_change = {"t":"U", "T":"U"} replace = "".join([base_change.get(n, n) for n in s]) return replace
方案2:更简洁的实现(性能更高)
如果需要保留其他碱基的原有大小写:
def transcribe_dna_to_rna(s): return s.replace('T', 'U').replace('t', 'U')
如果需要统一输出为大写:
def transcribe_dna_to_rna(s): return s.upper().replace('T', 'U')
内容的提问来源于stack exchange,提问作者Maskurate
相关产品推荐
相关产品推荐

