Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在Python中基于替换字典为某些单词生成变体字符串_Python_String_Dictionary - Fatal编程技术网

仅在Python中基于替换字典为某些单词生成变体字符串

仅在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']。目前我只有在有两个替换选项的情况下才能使用它 我的部分工作方法使用从字典生成的单词列表,例

给定一个字符串和一个单词替换字典,我试图让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']。这是:

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']