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
Post a Comment