0

私は辞書を持っています:

    mot={"READ":["0001",2],"MOVER":["0010",4],"MOVEM":["0011",2],"ADD":["0101",1],"COMP":["0110",2],"BC":["0111",3],"PRINT":["1000",5],"STOP":["1001",8]}  

これは、バイナリのコードと必要なバイト数が続く命令で構成されます。

ファイルから入力行を読み取り、それを変数 str2 に格納します。上記の辞書の文字列のいずれかが str2 に含まれているかどうかを確認したいと思います。

今、私はこのコードを使用して、それが起こるかどうかを確認しています:

    if any(x in str2 for x in mot):
        #do something

さて、私の問題は次のとおりです。場所変数があります。私が書きたいことをする代わりに:

    location=location+mot[x][1]  

つまり、見つかった x に基づいて位置変数をインクリメントしたいと考えています。どうすればいいですか?上記の方法で実行すると、x が定義されていないというエラーが表示されます。

4

2 に答える 2

1

一致する命令の長さを追加します。

print sum(v[1] for x, v in mot.items() if x in str2)
于 2013-09-01T02:58:36.450 に答える
1

これかも?

location = location + sum(mot[x][1] for x in mot if x in str2)
于 2013-09-01T02:58:57.720 に答える