首页 > 解决方案 > Python 必须用什么数据结构来关联两个数组?

问题描述

Python 中是否有一个数据结构来关联 Python 中的两个数组,以便如果用户在第一个数组中输入一个值,则返回来自第二个数组的随机值?

为了用一个例子来说明这一点,让我们考虑一个聊天机器人,它可能从一个可能性列表中从用户那里获得不同的查询,例如:

['hi', 'hello'] ​

并且机器人从另一个单词列表中随机回答:

['hi there', 'hey you']

如果查询与第一个列表匹配,如何从第二个列表中返回一个随机单词?请注意,可能有不同的列表对,所以我想有一个形式为 的字典d = {tuple : tuple},但我认为这不是这种情况下的最佳结构,因为这种类型的字典旨在用作d[tuple] 访问值,但在我的情况下,我只想检查该元组的一项。

编辑:请注意会有多对数组,而不仅仅是一对。要在一个模型中解释它(取自用户@lllrnr101),它将是:

P1(list_of_promts)->A1(list_of_answers_only_if_match_in_P1); 
P2(list_of_promts)->A2(list_of_answers_only_if_match_in_P2);

标签: pythondata-structures

解决方案


我认为最好将所有提示列表提取到一个中。因为对于一个输入,您必须查看所有提示列表,这使得代码 O(n^2); 但是将它们全部放在字典中,并将它们对应的答案列表索引,将使其在 O(n) 中可行。通过一个for循环,您可以回答所有输入。

import random

inputs = ['hi', 'bye']
prompts = {'hi': 0, 'hello': 0, 'goodbye': 1, 'bye': 1}
answers = (['hi there', 'hey you'], ['bye bye!', 'goodbye'])

for i in inputs:
    if i in prompts:
        print(random.choice(answers[prompts[i]]))

如果存在输入,则将打印来自答案中适当列表的随机答案。


推荐阅读