Я пытаюсь создать список B, сравнивая элементы из списка A с элементами X в словаре. Список B должен создавать все элементы Y из словаря, где X и Список A совпадают.
Вот мой список и словарь (это программа преобразования ДНК в белок):
tuple = 'gagcatgttggcctggtcctttgctaggtactgtagagcaggtgagagagtgagggggaaggactccaaattagaccagttcttagccatgaagcagagactctgaagccagactacctgggtcccaatcttgggcttggtatttcctcgctgtgtgactctggactgcgccatggggctcagcgacggggaatggcagttggtgctgaacgtctgggggaaggtggaggctgacatcccaggccatgggcaggaagtcctcatcaggctctttaagggtcacccagagactctggagaagtttgacaagttcaagcacctgaagtcagaggacgagatgaaggcgtctgaggacttaaagaagcatggtgccaccgtgctcaccgccctgggtggcatccttaagaagaaggggcatcatgaggcagagattaagcccctggcacagtcgcatgccaccaagcacaagatccccgtgaagtacctggagttcatctcggaatgcatcatccaggttctgcagagcaagcatcccggggactttggtgctgatgcccagggggccatgaacaaggccctggagctgttccggaaggacatggcctccaactacaaggagctgggcttccagggctaggcccctgccgctcccacccccacccatctgggccccgggttcaagagagagcggggtctgatctcgtgtagccatatagagtttgcttctgagtgtctgctttgtttagtagaggtgggcaggaggagctgaggggctggggctggggtgttgaagttggctttgcatgcccagcgatgcgcctccctgtgggatgtcatcaccctgggaaccgggagtggcccttggctcactgtgttctgcatggtttggatctgaattaattgtcctttcttctaaatcccaaccgaacttcttccaacctccaaactggctgtaaccccaaatccaagccattaactacacctgacagtagcaattgtctgattaatcactggccccttgaagacagcagaatgtccctttgcaatgaggaggagatctgggctgggcgggccagctggggaagcatttgactatctggaacttgtgtgtgcctcctcaggtatggcagtgactcacctggttttaataaaacaacctgcaacatctca'
diction = {'aaa': 'LYS', 'aac': 'ASN', 'aag': 'LYS', 'aat': 'ASN', 'aca': 'THR', 'acc': 'THR', 'acg': 'THR', 'act': 'THR', 'aga': 'ARG', 'agc': 'SER', 'agg': 'ARG', 'agt': 'SER', 'ata': 'ILE', 'atc': 'ILE', 'atg': 'MET', 'att': 'ILE', 'caa': 'GLN', 'cac': 'HIS', 'cag': 'GLN', 'cat': 'HIS', 'cca': 'PRO', 'ccc': 'PRO', 'ccg': 'PRO', 'cct': 'PRO', 'cga': 'ARG', 'cgc': 'ARG', 'cgg': 'ARG', 'cgt': 'ARG', 'cta': 'LEU', 'ctc': 'LEU', 'ctg': 'LEU', 'ctt': 'LEU', 'gaa': 'GLU', 'gac': 'ASP', 'gag': 'GLU', 'gat': 'ASP', 'gca': 'ALA', 'gcc': 'ALA', 'gcg': 'ALA', 'gct': 'ALA', 'gga': 'GLY', 'ggc': 'GLY', 'ggg': 'GLY', 'ggt': 'GLY', 'gta': 'VAL', 'gtc': 'VAL', 'gtg': 'VAL', 'gtt': 'VAL', 'taa': '***', 'tac': 'TYR', 'tag': '***', 'tat': 'TYR', 'tca': 'SER', 'tcc': 'SER', 'tcg': 'SER', 'tct': 'SER', 'tga': '***', 'tgc': 'CYS', 'tgg': 'TRP', 'tgt': 'CYS', 'tta': 'LEU', 'ttc': 'PHE', 'ttg': 'LEU', 'ttt': 'PHE'}
Это мой код:
protlist = []
for i in range(0,Len): # Len is length of tuple
tu = tuple[3*i:3*i+3]
if tu in diction:
for x,y in diction.items():
if tu == x:
protlist = [y]
print(*protlist,end =" ") # This prints each y value in a linear fashion
break
print(len(protlist))
Это мой ожидаемый результат:
GLU HIS VAL GLY LEU VAL LEU CYS *** VAL LEU *** SER ARG *** GLU SER GLU GLY GLU GLY LEU GLN ILE ARG PRO VAL LEU SER HIS GLU ALA GLU THR LEU LYS PRO ASP TYR LEU GLY PRO ASN LEU GLY LEU GLY ILE SER SER LEU CYS ASP SER GLY LEU ARG HIS GLY ALA GLN ARG ARG GLY MET ALA VAL GLY ALA GLU ARG LEU GLY GLU GLY GLY GLY *** HIS PRO ARG PRO TRP ALA GLY SER PRO HIS GLN ALA LEU *** GLY SER PRO ARG ASP SER GLY GLU VAL *** GLN VAL GLN ALA PRO GLU VAL ARG GLY ARG ASP GLU GLY VAL *** GLY LEU LYS GLU ALA TRP CYS HIS ARG ALA HIS ARG PRO GLY TRP HIS PRO *** GLU GLU GLY ALA SER *** GLY ARG ASP *** ALA PRO GLY THR VAL ALA CYS HIS GLN ALA GLN ASP PRO ARG GLU VAL PRO GLY VAL HIS LEU GLY MET HIS HIS PRO GLY SER ALA GLU GLN ALA SER ARG GLY LEU TRP CYS *** CYS PRO GLY GLY HIS GLU GLN GLY PRO GLY ALA VAL PRO GLU GLY HIS GLY LEU GLN LEU GLN GLY ALA GLY LEU PRO GLY LEU GLY PRO CYS ARG SER HIS PRO HIS PRO SER GLY PRO ARG VAL GLN GLU ARG ALA GLY SER ASP LEU VAL *** PRO TYR ARG VAL CYS PHE *** VAL SER ALA LEU PHE SER ARG GLY GLY GLN GLU GLU LEU ARG GLY TRP GLY TRP GLY VAL GLU VAL GLY PHE ALA CYS PRO ALA MET ARG LEU PRO VAL GLY CYS HIS HIS PRO GLY ASN ARG GLU TRP PRO LEU ALA HIS CYS VAL LEU HIS GLY LEU ASP LEU ASN *** LEU SER PHE LEU LEU ASN PRO ASN ARG THR SER SER ASN LEU GLN THR GLY CYS ASN PRO LYS SER LYS PRO LEU THR THR PRO ASP SER SER ASN CYS LEU ILE ASN HIS TRP PRO LEU GLU ASP SER ARG MET SER LEU CYS ASN GLU GLU GLU ILE TRP ALA GLY ARG ALA SER TRP GLY SER ILE *** LEU SER GLY THR CYS VAL CYS LEU LEU ARG TYR GLY SER ASP SER PRO GLY PHE ASN LYS THR THR CYS ASN ILE SER 390
Этот код внешне создаст правильный список. Однако, когда я вызываю длину списка, он выводится как 1. Я попытался заменить protlist = [y] на protlist.append (y). Это дало правильную длину списка и неправильный вывод.
Я также попытался использовать вместо этого функцию соединения с '' .join (y), но это также дало неправильную длину списка.
Как я могу отредактировать код, чтобы получить как правильный вывод, так и длину списка? Спасибо.