python 3.x - Why does it stop iterating after first value? -


def similarity(dna1, dna2):     count = 0     in range(len(dna1)):         if dna1.lower()[i] == dna2.lower()[i]:             count += 1     return count / len(dna1)  def best_match(dna_list, dna):     dna_seq in dna_list:         dna1 = dna_seq         dna2 = dna         dict = {dna_seq: similarity(dna1, dna2)}     return dict 

in best_match given list contains dna sequences (dna_list). using above function need compare each sequence given dna (dna). return dna sequence highest similarity. trying create dictionary store dna sequence similarity value , comparing similarities , returning corresponding sequence. however, stuck. when run returns 1 dna sequence , similarity value; however, given 3 dna sequences. i'm having trouble because list of given dna sequences (in dna_list) can vary.

you creating new dictionary @ every iteration. doesn't stop iterating, returning value last iteration, ignoring previous ones.

what want this:

result = dict() dna_seq in dna_list:     dna1 = dna_seq     dna2 = dna     result[dna_seq] = similarity(dna1, dna2)  return result 

which can written more briefly dictionary comprehension:

return {dna_seq:similarity(dna_seq, dna) dna_seq in dna_list} 

apart that, shouldn't call variable dict because shadows built-in type dict.


Comments