在我正在处理的代码中,当我试图将字典放入列表时,我收到了一条错误消息,并将该列表拆分为三个字母的rna密码子。这就是我输入的内容:
for i in range (0, len(self.codon_dict), 3): #in range from the first object to the last object of the string, in multiples of three
codon = (list(self.codon_dict.items[i:i+3])) #codons in string are read from the first object (i) to another object three bases down the string
print (codon)
if codon in NucParams.codon_dict():
self.codon_dict[codon] +=1
我收到的错误是:
codon = (list(self.codon_dict.items[i:i+3])) #codons in string are read from the first object (i) to another object three bases down the string
TypeError: 'builtin_function_or_method' object is not subscriptable
当他们说某个对象不可订阅时,他们的意思是什么?另外,我该如何设法修复此错误?感谢。
注意: NucParams 是我的类,而 codon_dict 是列出恰好编码氨基酸的三个字母密码子的字典。
答案 0 :(得分:1)
首先,您尝试下标方法(或函数)项,而不是函数的结果;您在()
之后遗漏了括号self.codon_dict.items
。
其次,假设你像我一样习惯了Python 2,你可能会惊讶于dict.items()现在在字典项上返回一个'view';有关详情,请参阅this SO question。
这里有一些简单的示例代码,展示了如何在Python 3中使用dict.items()。
import itertools
d={'foo':'bar',
'baz':'quuz',
'fluml':'sqoob'}
print(list(d.items())[0:2])
print(list(itertools.islice(d.items(),0,2)))
运行此功能
[('foo', 'bar'), ('baz', 'quuz')]
[('foo', 'bar'), ('baz', 'quuz')]