gpt4 book ai didi

python - 如何比较不相同的列表并从 Python 中的字典中获取值?

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:32 25 4
gpt4 key购买 nike

这是一个字典键,用于存储每个密码子(三联碱基,如 ATG、GCT 等)的氨基酸值(单个字母)。

aminoacid = {'TTT' : 'F','TTC' : 'F','TTA' : 'L','TTG' : 'L','CTT' : 'L','CTC' : 'L','CTA' : 'L','CTG' : 'L','ATT' : 'I','ATC' : 'I','ATA' : 'I','ATG' : 'M','GTT' : 'V','GTC' : 'V','GTA' : 'V','GTG' : 'V','TCT' : 'S','TCC' : 'S','TCA' : 'S','TCG' : 'S','CCT' : 'P','CCC' : 'P','CCA' : 'P','CCG' : 'P','ACT' : 'T','ACC' : 'T','ACA' : 'T','ACG' : 'T','GCT' : 'A','GCG' : 'A','GCA' : 'A','GCG' : 'A','TAT' : 'Y','TAC' : 'Y','TAA' : 'STOP','TAG' : 'STOP','CAT' : 'H','CAC' : 'H','CAA' : 'Q','CAG' : 'Q','AAT' : 'N','AAC' : 'N','AAA' : 'K','AAG' : 'K','GAT' : 'D','GAC' : 'D','GAA' : 'E','GAG' : 'E','TGT' : 'C','TGC' : 'C','TGA' : 'STOP','TGG' : 'W','CGT' : 'R','CGC' : 'R','CGA' : 'R','CGG' : 'R','AGT' : 'S','AGC' : 'S','AGA' : 'R','AGC' : 'R','CGT' : 'G','GGC' : 'G','GGA' : 'G','GGG' : 'G',}

如您所见,多个密码子可以编码相同的氨基酸(例如 GGT、GGC、GGA、GGG 等,所有密码子都编码甘氨酸 (G))。这些是同义的 (DSyn),如果密码子编码不同的氨基酸,它们是非同义的 (DNonsyn)

这是 this question 的扩展,如果有人感兴趣的话。

我有以下序列:

list1 = ['ACT','ACT','nonsyn','G','L']

list2 = ['ACT','ACC','GGT','ATT']

在这里,- list1 源自先前的计算,因此它是碱基、氨基酸(单字母条目)和 nonsyn(空)的组合。- list2 是包含三联体密码子的列表。

在这段代码中,我需要比较 list1 和 list2。 list1 中的每个元素只能与相应的元素 list2 进行比较以执行以下操作:

  1. 如果两个列表中都存在密码子碱基,则比较碱基:A。如果碱基相同 (例如 ACT、ACT) 则什么也不做。b.如果碱基不相同 (例如 ACT、ACC),则在字典中查找氨基酸。如果氨基酸相同则将 countDsyn 增加 1,如果它们不相同则将 countDnonsyn 增加 1

  2. 如果将 list1 中的“nonsyn”与 list2 进行比较,则不执行任何操作。

  3. 如果将 list1 中的氨基酸与 list2 进行比较:从氨基酸字典中查找 list2 对应的氨基酸。A。如果氨基酸相同则将 countDsyn 加 1b.如果氨基酸相同,则将 countDnonsyn 增加 1

给定案例的最终输出:

Dsyn = 2Dnonsyn = 1

在比较 if 循环时需要帮助检查我从字典中调用值的方式是否正确

代码尝试:

countDsyn = 0
countDnonsyn = 0

for pos1,value1 in enumerate(list1):
for pos2,value2 in enumerate(list2):
if value1 in list1 = combination(ATGC,3): #eg. ACT,AGT,TTT etc. There are can be 64 such combinations
if value1 in list1 == value2 in list2: #eg. ACT, ACT
#Do nothing
if value1 in list1 != value1 in list2: #eg. ACT,ACC
if value1[aminoacid] == value2[aminoacid]:
countDsyn =+1
else:
countDnonsyn =+1
if value1 in list1 = "nonsyn":
#Do nothing
if value1 in list1 = (A-Z): #eg. 'G''L' etc.
if value1 == value2[aminoacid] #eg. comparing 'G' and the aminoacid value of GTT from the dictionary
countDsyn =+ 1
if value1 != value2[aminoacid]:
countDnonsyn =+1

最佳答案

你需要这样的东西:

for value1, value2 in zip(list1, list2):
# Condition 2 in your question
if value1 == 'nonsyn':
continue
# Condition 1 in your question
if value1 in aminoacid.keys():
if value1 == value2:
continue
elif aminoacid[value1] == aminoacid[value2]:
countDsyn += 1
else:
countDnonsyn += 1
# Condition 3 in your question
else:
if aminoacid[value2] == value1:
countDsyn += 1
else:
countDnonsyn += 1

关于python - 如何比较不相同的列表并从 Python 中的字典中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40334203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com