2015-11-29 2 views
0

enter image description hereКак сравнить две подстроки, которые хранятся в словаре p?

Я пытаюсь создать матрицу смежности, основанную на сравнение совпадений между подстроками множества A.If есть перекрытие между подстроками, то я буду хранить +1 в матрице М еще wont.I уже написанный код, использующий совпадение последовательностей для сравнения строк, но при попытке выполнить код я получаю следующую ошибку.

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 
+2

Возможный дубликат [Найти общую подстроку между двумя строками] (http://stackoverflow.com/questions/18715688/find-common-substring-between-two-strings) –

+0

Мой запрос был больше на я уже написал код, использующий совпадение последовательностей для сравнения строк, но я думаю, что есть ошибка в том, как следует вызывать строки из словаря. –

+0

Я действительно не понимаю, что вы говорите, но если у вас возникла ошибка, с которой вы ожидаете от нас, пожалуйста, напишите полный текст ошибки и полный ответ в своем вопросе (как текст, а не текст Скриншот). –

ответ

0

Ваш трассировочный ответ сообщает вам, в чем проблема. В этой строке:

elif sm(None,p.keys(i),p.keys(j))!=0: 

Вы прошли i как аргумент к .keys. keys не принимает никаких аргументов. Вы могли иметь в виду использовать keys()[i], но реально, если вы на самом деле пытается получить доступ к .keys()[i], где вы должны уже использовали items() вместо keys(), так что вы хотите иметь доступ к 2-кортежей в виде (key, value) от вашего Словарь.

+0

Ohhkk..Ну, я получил его. Да, я попытался изменить его в своем коде. Благодарю вас. –

Смежные вопросы