Python 使用random.sample用字典中的值替换字符串

Python 使用random.sample用字典中的值替换字符串,python,dictionary,random,Python,Dictionary,Random,假设我正在创建一个madLib,我想替换包含单词“复数名词”的字符串中的每个单词。基本上,用户会得到一个提示,提示输入复数名词,这些输入会转到字典(pluralnoDict) 我一直在使用随机选择,它一直在运行,但是,重复显然是个问题。我尝试了random.sample,但是,代码不是从给定样本中选择一个单词,而是用整个样本替换这些单词 是否有一种方法可以使用字典列表中的random.sample替换每个字符串?例如: 原文:“复数名词”有“复数名词”和“复数名词”。 预期:鸟有翅膀和脚 下面是

假设我正在创建一个madLib,我想替换包含单词
“复数名词”
的字符串中的每个单词。基本上,用户会得到一个提示,提示输入复数名词,这些输入会转到字典(
pluralnoDict

我一直在使用随机选择,它一直在运行,但是,重复显然是个问题。我尝试了
random.sample
,但是,代码不是从给定样本中选择一个单词,而是用整个样本替换这些单词

是否有一种方法可以使用字典列表中的
random.sample
替换每个字符串?例如:

原文:
“复数名词”
“复数名词”
“复数名词”
。 预期:鸟有翅膀和脚

下面是我用来替换复数名词字符串的for循环

for key in pluralnoDict:
        target_word = "({0})".format(key)
        while target_word in madString:
            madString = madString.replace(target_word, random.choice(pluralnoDict[key]), 1)

你查过
random
库了吗?您可以使用它获得随机索引,因此,据我所知,可能的解决方案如下所示:

重新导入
随机输入
单词列表=[“狗”、“猫”、“老鼠”]
mad_lib=“敏捷的棕色复数名词跳过了懒惰的复数名词”
而mad_lib中的“复数名词”:
random_index=random.randint(0,len(单词列表))
mad_lib=re.sub(“复数名词”,单词列表[随机索引],mad_lib,1)
删除单词列表[随机索引]
打印(mad_lib)

如果您想使用所有的名词,但顺序是随机的,您可以使用
random.shuffle
并执行如下操作:

来自随机导入洗牌
target_word=“复数名词”
mad_str=“复数名词”有复数名词和复数名词”
复数名词=[“鸟”、“脚”、“翅膀”]
洗牌(复数名词)
对于复数名词中的名词:
mad_str=mad_str.replace(目标词,名词,1)
印刷品(mad_街)

就在这里。谢谢你!我特别希望字符串替换来自一组字典值,但是来自列表也可以!