我正在尝试理解一个迭代函数,它接受一个字符串“12345”,并根据靠近字符串中每个字符的键字典返回所有可能的拼写错误。
outerDic = {}
Dict1 = {'1':'2','2':'q'}
outerDic['1'] = Dict1
Dict1 = {'1':'1','2':'q','3':'w','4':'3'}
outerDic['2'] = Dict1
Dict1 = {'1':'2','2':'w','3':'e','4':'4'}
outerDic['3'] = Dict1
Dict1 = {'1':'3','2':'e','3':'r','4':'5' }
outerDic['4'] = Dict1
Dict1 = {'1':'4','2':'r','3':'t','4':'6' }
outerDic['5'] = Dict1
outerDic
输出应返回字符串列表
12345
22345
q2345
11345
1q345
13345
12245
12e45
12445
依旧......
我将功能设置如下:
def split_line(text):
words = text.split()
for current_word in words:
getWordsIterations()
我想了解如何设置getWordsIterations()函数来浏览字典并系统地替换字符。
答案 0 :(得分:1)
我不确定内部词汇是什么,都带有键'1','2'等表示 - 它们基本上只是用于列出可能的拼写错误的列表吗?但是一些(但不是全部)还会包括“正确”的角色......非拼写错误......?!对不起,但你真的在这个演示文稿中非常混乱 - 这个例子没有多大帮助(为什么第二个位置从来没有“w”,如果我理解你的怪异,这应该是一个可能的拼写错误数据结构......等等。
因此,在等待澄清的同时,让我假设您想要的只是为每个输入字符代表所有可能的单字符拼写错误 - 列表可以正常但字符串在这种情况下更紧凑,并且基本相同:
possible_typos = {
'1': '2q',
'2': '1qw3',
'3': '2we4',
'4': '3er5',
'5': '4rt6',
}
现在如果你只关心1个错误拼写的案例:
def one_typo(word):
L = list(word)
for i, c in enumerate(L):
for x in possible_typos[c]:
L[i] = x
yield ''.join(L)
L[i] = c
例如,for w in one_typo("12345"): print w
会发出:
22345
q2345
11345
1q345
1w345
13345
12245
12w45
12e45
12445
12335
123e5
123r5
12355
12344
1234r
1234t
12346
“任意数量的拼写错误”都会产生一个巨大的列表 - 这就是你想要的吗?还是“0到2的错别字”?或者还有什么......?