比较字典中的所有值对

时间:2016-05-18 14:56:09

标签: python

有人可以告诉我如何在同一个字典中比较所有值?

我有一个名为dic_trans的字典,它包含所有被翻译成具有特定功能的氨基酸序列的翻译序列。

键是dna序列,值是氨基酸序列:

dic_trans[sequence] = trans

我想将每个值(aa序列)与所有其他值(aa序列)进行比较,以找到相似的值(重复序列),以便删除相应的dna序列=====>目标:清洁dna序列

1 个答案:

答案 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)