I have a phrase with some special marked words which I want to replace. These words match a key in a dictionary, which has a list of words that I want to randomly choose to replace with.

I'm wondering if there's a better way to go about doing this, or is what I have seem like a valid approach? I have a feeling there may be a smarter way with `lambda` but I'm not sure.

Hopefully the code explains for itself!

```
import random

words = {"fruit":["apples", "bananas", "oranges"], 
         "veggies":["broccoli", "corn", "cucumbers"]}

txt = "I'm not in a mood for [veggies], I rather have [fruit], and [fruit]."

for key in words:
    target_word = "[{0}]".format(key)

    while target_word in txt:
        txt = txt.replace(target_word, random.choice(words[key]), 1)

```

Running it a few times will randomly output:

> 
> I'm not in a mood for corn, I rather have bananas, and apples.
> 
> 
> I'm not in a mood for broccoli, I rather have oranges, and bananas.
> 
> 
> I'm not in a mood for cucumbers, I rather have apples, and oranges.
> 
> 
> ..and so on..
> 
> 
> 

I should mention that there could be any number of keys in `words`, and any number of marked words in the text.