【发布时间】:2020-07-10 16:49:38
【问题描述】:
我试图通过将列表 A 中的元素与字典中的 X 元素进行比较来生成列表 B。 List B 应该从 X 和 List A 匹配的字典中生成所有 Y 元素。
这是我的清单和字典(这是 DNA 翻译成蛋白质程序):
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.append(y) 替换 protlist = [y]。这给出了正确的列表长度和错误的输出。
我也尝试使用 join 函数而不是 ''.join(y) 但这也给出了不正确的列表长度。
如何编辑代码以实现正确的输出和列表长度?谢谢。
【问题讨论】:
-
X是字典的值还是字典的键?
-
对不起,应该更清楚; x 是键,y 是值
-
我们可以看看您的
lists 和dict的示例,以及您的预期输出吗? -
嗨 - 现在刚刚将这些添加到我的问题中,谢谢。
标签: python python-3.x list for-loop if-statement