【发布时间】:2021-05-06 06:36:37
【问题描述】:
我正在尝试打印单词“otaku”的所有可能的字符替换。
#!/usr/bin/python3
import itertools
user_input = "otaku"
dict = {
'c': ['c', 'C'],
'a': ['a', 'A', '@'],
't': ['t', 'T'],
'k': ['k', 'K'],
'u': ['u', 'U'],
'e': ['e', 'E', '3'],
'o': ['o', 'O', '0']
}
output = ""
for i in itertools.product(dict['o'],dict['t'],dict['a'],dict['k'],dict['u']):
output += ''.join(i) + "\n"
print(output)
上述脚本有效,但我需要 itertools.product() 输入 (dict['o'],dict['t'],dict['a'],dict['k'],dict['u']) 是动态的(例如,new_list):
#!/usr/bin/python3
import itertools
user_input = "otaku"
dict = {
'c': ['c', 'C'],
'a': ['a', 'A', '@'],
't': ['t', 'T'],
'k': ['k', 'K'],
'u': ['u', 'U'],
'e': ['e', 'E', '3'],
'o': ['o', 'O', '0']
}
new_list = []
for i in user_input:
new_list.append(dict[i])
output = ""
for i in itertools.product(new_list):
output += ''.join(i) + "\n"
print(output)
此错误:
TypeError: sequence item 0: expected str instance, list found
我尝试了找到 here 的解决方案,但将列表转换为 str 会破坏 itertools.product 行。
如何将动态输入传递给itertools.product()?
期望的输出:
otaku
otakU
otaKu
otaKU
otAku
otAkU
otAKu
otAKU
ot@ku
ot@kU
ot@Ku
ot@KU
oTaku
oTakU
oTaKu
oTaKU
oTAku
oTAkU
oTAKu
oTAKU
oT@ku
oT@kU
oT@Ku
oT@KU
Otaku
OtakU
OtaKu
OtaKU
Ot@KU
【问题讨论】:
标签: python-3.x list loops dictionary iterator