仅在Python中基于替换字典为某些单词生成变体字符串
给定一个字符串和一个单词替换字典,我试图让python返回所有变量字符串。例如,对于字符串“一去市场”,以及替换的dict{'One':['One','Two','Three','market':['town','bed']}我想返回:['One to town','Two to town','Three to town','One to bed','Two to bed','Three to bed']。目前我只有在有两个替换选项的情况下才能使用它 我的部分工作方法使用从字典生成的单词列表,例如,在上面的示例中,我有['1,2,3','Got','to','town,bed']。这是:仅在Python中基于替换字典为某些单词生成变体字符串,python,string,dictionary,Python,String,Dictionary,给定一个字符串和一个单词替换字典,我试图让python返回所有变量字符串。例如,对于字符串“一去市场”,以及替换的dict{'One':['One','Two','Three','market':['town','bed']}我想返回:['One to town','Two to town','Three to town','One to bed','Two to bed','Three to bed']。目前我只有在有两个替换选项的情况下才能使用它 我的部分工作方法使用从字典生成的单词列表,例
def perm(wordlist):
a=[[]]
for i in wordlist:
if ',' in i:
wds=i.split(',')
for alis in a:
alis.append(wds[0])
for j in wds[1:]:
b=[x[:-1] for x in a]
for alis in b:
alis.append(j)
a=a+b
else:
for alis in a:
alis.append(i)
return a
对于['One,Two','Got','to','town,bed',我得到了所需的结果,但任何时候都有两个以上的选项,这是乱七八糟的。假设您有以下选项:
string = "One went to market"
dict_repl = {'One':['One','Two','Three'],'market':['town','bed']}
您可以使用以下方法使用此一行程序获得预期结果:
输出:
['One went to town', 'Two went to town', 'Three went to town', 'One went to bed', 'Two went to bed', 'Three went to bed']
我相信这就是你所要求的。到目前为止你都试过什么?你能发布你的代码吗?还有,你想如何处理重复的代码?“一个人再去一次酒店”怎么处理?您希望在这种情况下生成3个句子还是9个句子?在这种情况下生成9个句子(虽然使用我的输入可能不会出现这种情况)。现在已粘贴代码-抱歉,需要一些时间才能正确设置格式-我是newThanks,这是所需的输出,但您如何使其适应数千种不同的输入,一本包含几十个键和几百个值的字典?你还想让一个、两个和三个不同的词重复你的其他词,比如“一个和安妮一起去市场”,“一个和米卡萨一起去市场”,然后是“两个”,然后是“三个”?我真的不知道你要找的@smallpipeyes的组合是什么:一个是mikasa,两个是mikasa,三个是mikasa,一个是annie,两个是annie,等等。。因此,所有在repl_dict中有条目的单词都会与repl_dict中的所有其他单词生成一个新字符串,而没有条目的单词对所有字符串都是通用的。
['One went to town', 'Two went to town', 'Three went to town', 'One went to bed', 'Two went to bed', 'Three went to bed']