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); 

我有两个字典,其中包含:

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

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

每次它说出一本词典中的一个单词并将其转换为替代术语时,我将如何找到它?

即,如果它遇到'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 所说,如果你只是合并 dicts,它会变得简单得多:

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

您应该使用replace字符串方法。

于 2012-05-17T07:34:58.380 回答