我试图基于比较集合A的子串之间的重叠来创建邻接矩阵。如果子串之间存在重叠,那么我将在矩阵中存储+1,否则不会。我已经编写了一个代码利用用于比较字符串的序列匹配器,但在尝试执行代码时出现以下错误。
import numpy
import array
from difflib import SequenceMatcher as sm
##
###read the file
##f=open('spectrum.txt','r')
##s=f.readlines()
##a=str(s)
a='{ATG,TGG,TGC,GTG,GGC,GCA,GCG,CGT}'
p= dict(enumerate(a[1:-1].split(",")))
print p
n= p.keys()[-1]
print p.keys()[1]
M=numpy.zeros([n,n],int)
print M
for i in range(0,n-1):
for j in range(0,n-1):
if i==j:
pass
elif sm(None,p.keys(i),p.keys(j))!=0:
M[i,j]+=1
else:
pass
print M
答案 0 :(得分:0)
您的追溯会告诉您究竟是什么问题。在这一行:
elif sm(None,p.keys(i),p.keys(j))!=0:
您已将i
作为参数传递给.keys
。 keys
不接受任何争论。您可能打算使用keys()[i]
,但实际上,如果您实际尝试访问.keys()[i]
,您应该使用items()
代替keys()
{1}}这样您就可以从字典中访问(key, value)
形式的2元组了。