我想用名为gRep1Map
的字典替换lst中列出的名为test1
的字符串。它需要使用gRep1Map
中的字符返回所有可能的组合。我得到一个输出,但不是我想要的。似乎真的找不到实现这一目标的方法
这是我的密码
text = "Test1"
#Create dictionary
gReplMap = { 'a': '@', 'e': '3', 'i': '1', 'o': '0', 't': '+',
'A': '@', 'E': '3', 'I': '1', 'O': '0', 'T': '+',
}
lst = []
for old, new in gReplMap.items():
text = text.replace(old, new)
lst.append(text)
print(lst)
输出如下所示
['Test1']
['Test1', 'T3st1']
['Test1', 'T3st1', 'T3st1']
['Test1', 'T3st1', 'T3st1', 'T3st1']
['Test1', 'T3st1', 'T3st1', 'T3st1', 'T3s+1']
['Test1', 'T3st1', 'T3st1', 'T3st1', 'T3s+1', 'T3s+1']
['Test1', 'T3st1', 'T3st1', 'T3st1', 'T3s+1', 'T3s+1', 'T3s+1']
['Test1', 'T3st1', 'T3st1', 'T3st1', 'T3s+1', 'T3s+1', 'T3s+1', 'T3s+1']
['Test1', 'T3st1', 'T3st1', 'T3st1', 'T3s+1', 'T3s+1', 'T3s+1', 'T3s+1', 'T3s+1']
['Test1', 'T3st1', 'T3st1', 'T3st1', 'T3s+1', 'T3s+1', 'T3s+1', 'T3s+1', 'T3s+1', '+3s+1']
但我希望它是这样的
['test1', 'tes+1', 't3st1', 't3s+1', '+est1', '+es+1', '+3st1', '+3s+1']
有人能帮忙吗
你不应该反复阅读字典,而应该阅读文本中的字母。这里有一个不使用itertools的解决方案
(一个罕见的
reduce
有用的例子…)产生:
如果您希望按生成顺序查看不同的值,请使用
dict
(具有插入顺序)并列出它:然后:
注意:在原始问题的预期结果中,
'test1'
的所有变体似乎都是小写的,但您的示例代码或问题的文本似乎都没有指定。当然,如果你想要的话,在reduce之后使用.lower()
相关问题 更多 >
编程相关推荐