2017-10-24 3 views
-3

文字列の一部が何らかのインデックスで何度も繰り返されている場合は、最初のオカレンスのインデックスをどのように置き換えることができますか?リスト内の重複文字列を見つけて最初の出現のインデックスに置き換えるにはどうすればよいですか?

たとえば、 私はコードを使用してPythonで生成されるリストを持っています。 出力は次のようになります。

['False'] 
['AND(a,b)'] 
['AND(a,~b)'] 
['OR(AND(a,~b),AND(a,b))'] 
['AND(~a,b)'] 
['OR(AND(~a,b),AND(a,b))'] 
['OR(AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,b),AND(a,~b),AND(a,b))'] 
['AND(~a,~b)'] 
['OR(AND(~a,~b),AND(a,b))'] 
['OR(AND(~a,~b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(a,~b),AND(a,b))'] 
['OR(AND(~a,~b),AND(~a,b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b),AND(a,b))'] 

ここで文字列AND(a、b)は、既にリストに2位に存在するので、どのように我々はAND(の指標であり、(a、b)はさらに、既存の文字列を置き換えることができ、 B)、AND(交換した後、1

であるb)の出力が

['False'] 
['AND(a,b)'] 
['AND(a,~b)'] 
['OR(AND(a,~b),1)'] 
['AND(~a,b)'] 
['OR(AND(~a,b),1)'] 
['OR(AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,b),AND(a,~b),1)'] 
['AND(~a,~b)'] 
['OR(AND(~a,~b),1)'] 
['OR(AND(~a,~b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(a,~b),1)'] 
['OR(AND(~a,~b),AND(~a,b))'] 
['OR(AND(~a,~b),AND(~a,b),1)'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b),1)'] 

、すべての重複している文字列を検索し、それらは出力が

あるべき発見されたインデックスでそれらを交換した後でなければなりません
['False'] 
['AND(a,b)'] 
['AND(a,~b)'] 
['OR(2,1)'] 
['AND(~a,b)'] 
['OR(4,1)'] 
['OR(4,2)'] 
['OR(4,2,1)'] 
['AND(~a,~b)'] 
['OR(8,1)'] 
['OR(8,2)'] 
['OR(8,2,1)'] 
['OR(8,4)'] 
['OR(8,4,1)'] 
['OR(8,4,2)'] 
['OR(8,4,2,1)'] 

Pythonにはこれを行う方法がありますか? 私はそうすることができません。 何か助けていただければ幸いです。 おかげ

+0

最初にこれらの文字列をどのように生成したかを変更する必要があるようです。 (ヘック、なぜ彼らは文字列だったの?) – user2357112

+0

与えられた入力数に対して、可能な論理的な組み合わせを生成する必要があります。 7つの入力変数に対して可能な組み合わせは2^2^7になります。 スクリプトは出力を生成します –

答えて

0
私は値としてインデックスを持つ辞書( test_dict)にそれぞれの新しい/一意の文字列を格納したい

['False'] # this is a new value, so test_dict['False'] = 0 
['AND(a,b)'] # test_dict['AND(a,b)'] = 1 
['AND(a,~b)'] # test_dict['AND(a,~b)'] = 2 

など。各リストを構成するときに、その値がdictに存在するかどうかをチェックし、正しいインデックスに置き換えます。

関連する問題