を清掃してください。それが問題を引き起こす可能性が修正しながら、シーケンスの繰り返し処理
。そのため、辞書の内容を最初にコピーして辞書を変更するか、削除するキーのリストを作成してから削除する必要があります。
私はあなたの辞書がどのように大きな知りません。それはあまりにも大きくない場合は、削除するキーのリストを構築し、その後、一つずつを削除できます。
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)
意味「比較」はどのような?すべての値が等しい場合はどうなりますか? 1つの値を除くすべてが等しい場合はどうなりますか?また、値の種類は何ですか?それらはすべてハッシュ可能ですか? – DeepSpace
私は[** 'itertools.combinations' **]あなたが使用したいと想像(https://docs.python.org/2/library/itertools.html#itertools.permutations)例:' itertools.combinations(sequence_translations。値()。2) ' –
私は問題を理解すると一度編集してください。あなたは明確な入力と返されたいものを例として挙げてください。 Thx –