1

これを含むファイルがあります:

((S000383212:0.0,JC0:0.244562):0.142727,(S002923086:0.0,(JC1:0.0,JC2:0.0):0.19717200000000001):0.222151,((S000594619:0.0,JC3:0.21869):0.13418400000000003,(S000964423:0.122312,JC4:0.084707):0.18147100000000002):0.011521999999999977); 

次の内容を含む 2 つの辞書があります。

org = {'JC4': 'a','JC0': 'b','JC1': 'c','JC2': 'c','JC3': 'd'}

RDP = {'S000383212': 'hello', 'S002923086': 'this', 'S000594619': 'is'}

辞書の 1 つにある単語の 1 つを言うたびに、それを別の用語に変換するにはどうすればよいでしょうか?

つまり、'JC0' に遭遇すると、'b' に変換されます。

4

3 に答える 3

5
for key in org.keys() + RDP.keys():
    text = text.replace(key, org.get(key, None) or RDP.get(key, None))

もちろん、TryPyPy が言ったように、dict をマージするだけで、はるかに簡単になります。

org.update(RDP)
for item in org.items():
    text = text.replace(*item)
于 2012-05-17T07:34:36.367 に答える
2

パフォーマンスがそれほど重要でない場合は、次のコードを使用できます。

with open('your_file_name.txt') as f:
    text = f.read()
    for key, value in org.items() + RDP.items():
        text = text.replace(key, value)

このコードにはO(n * k)時間計算量があります。ここで、nはの長さであり、textk両方の辞書のエントリの数です。この複雑さがタスクに合わない場合は、Aho-Corasickアルゴリズムが役立ちます。

于 2012-05-17T07:47:10.017 に答える
1

replacestring メソッドを使用する必要があります。

于 2012-05-17T07:34:58.380 に答える