我正在研究如下的句子构成:
sentence = "PERSON is ADJECTIVE"
dictionary = {"PERSON": ["Alice", "Bob", "Carol"], "ADJECTIVE": ["cute", "intelligent"]}
我现在需要从字典中获取所有可能的组合来构成这个句子,例如:
Alice is cute
Alice is intelligent
Bob is cute
Bob is intelligent
Carol is cute
Carol is intelligent
以上用例相对简单,下面的代码实现了它。
dictionary = {"PERSON": ["Alice", "Bob", "Carol"], "ADJECTIVE": ["cute", "intelligent"]}
for i in dictionary["PERSON"]:
for j in dictionary["ADJECTIVE"]:
print(f"{i} is {j}")
我们能否将这个方法扩展到更长的句子呢?
例如:
sentence = "PERSON is ADJECTIVE and is from COUNTRY"
dictionary = {"PERSON": ["Alice", "Bob", "Carol"], "ADJECTIVE": ["cute", "intelligent"], "COUNTRY": ["USA", "Japan", "China", "India"]}
这应该再次提供所有可能的组合,例如:
Alice is cute and is from USA
Alice is intelligent and is from USA
.
.
.
.
Carol is intelligent and is from India
我试图使用https://www.pythonpool.com/python-permutations/,但是句子都混在一起了 - 但我们如何使一些单词固定,就像这个例子中的单词"and is from"
一样固定。
本质上,如果字典中的任何键等于字符串中的单词,则该单词应替换为字典值列表。
有什么想法将非常有帮助。
itertools.product(*dictionary.values())
的输出。 - JonSGstr.format()
知道如何处理的内容,这样你就不必自己做replace
的工作了。 - Samwise