有人可以告诉我如何在同一个字典中比较所有值?
我有一个名为dic_trans
的字典,它包含所有被翻译成具有特定功能的氨基酸序列的翻译序列。
键是dna序列,值是氨基酸序列:
dic_trans[sequence] = trans
我想将每个值(aa序列)与所有其他值(aa序列)进行比较,以找到相似的值(重复序列),以便删除相应的dna序列=====>目标:清洁dna序列
答案 0 :(得分:0)
你需要考虑两件事。
在修改序列时迭代序列可能会导致问题。因此,您需要先复制字典的内容然后修改字典,或者构建要删除的密钥列表,然后将其删除。
我不知道你的字典有多大。如果它不是太大,你可以建立一个你想要删除的键列表,然后逐个删除它们:
for sequence in sequences_to_remove:
del sequence_trans[sequence]
或者,您可以从旧字典创建一个全新的字典,但过滤掉您不想要的序列:
unique_sequence_trans = {sequence: trans
for sequence, trans in sequence_trans.items()
if sequence not in sequences_to_remove}
其次,问题的主要部分是如何找到重复项。并非您希望将每个trans
与其他trans
进行比较,而是希望保留具有唯一trans
的序列:
seen_trans = set()
sequences_to_remove = set()
for sequence, trans in sequence_trans.items():
if trans in seen_trans:
sequences_to_remove.add(sequence)
else:
seen_trans.add(trans)