2016-05-18 8 views
-4

誰かが同じ辞書のすべての値をお互いに比較する方法を教えてもらえますか?辞書の値のすべてのペアを比較する

私はdic_transという名前の辞書を持っている、それはすべての翻訳配列の魔女は、特定の機能をアミノ酸配列に翻訳されましたが含まれています。

キーはDNA配列であり、値がアミノ酸配列である:

dic_trans[sequence] = trans 

私は同様のものを見つけるために、他のすべての値(アミノ酸配列)の各値(アミノ酸配列)を比較します(対応するDNA配列を削除するために、重複は)=====>目標:あなたは二つのことを考える必要があり、DNA配列に

+2

意味「比較」はどのような?すべての値が等しい場合はどうなりますか? 1つの値を除くすべてが等しい場合はどうなりますか?また、値の種類は何ですか?それらはすべてハッシュ可能ですか? – DeepSpace

+0

私は[** 'itertools.combinations' **]あなたが使用したいと想像(https://docs.python.org/2/library/itertools.html#itertools.permutations)例:' itertools.combinations(sequence_translations。値()。2) ' –

+0

私は問題を理解すると一度編集してください。あなたは明確な入力と返されたいものを例として挙げてください。 Thx –

答えて

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} 

第2に、問題の主な部分は重複を見つける方法です。それはあなたが他のすべての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) 
+0

返信いただきありがとうございます! はい、私のファイルは膨大なものになることがあります。 スクリプトを使用しようとしましたが、add()関数が機能しません: AttributeError: 'dict'オブジェクトに 'add'属性がありません –

+0

@ Amel.mek申し訳ありません、私の間違いは、 'set' 'dict'です。一定。 –

関連する問題