根据顺序将匹配的一个列表值返回到另一个列表的值

时间:2020-10-26 02:26:48

标签: python list

我有四个列表:

user = [0,0,1,1]
names = ["jake","ryan","paul","david"]
disliked_index = [0,1]
ranked_names = ["paul","ryan","david","jake"]

列表“用户”保存用户对列表“名称”中他们喜欢的名称(如果喜欢则为1,如果不喜欢则为0)的响应。 disliked_index保留用户在用户列表中指示为0的列表位置。 rank_names根据数据集(多个学生)保存从最受欢迎到最受欢迎的名字。我想要达到的目的是返回用户回答他们不喜欢的最受欢迎的名称。这样

mostpopular_unlikedname = "ryan"

到目前为止,我所做的是:

placement = []
for i in disliked_index:
    a = names[i]
    placement.append(a)

我现在有一个列表,其中包含用户不喜欢的名称。

placement = ["jake","ryan"]

在这里,我的逻辑是运行一个循环,以检查展示位置列表中的哪些名称出现在rank_names列表中,并按照从流行到最少的顺序添加到top_name列表中。

top_name =[]
for i in range(len(ranked_names)):
    if ranked_names[i] == placement:
        top_name.append[i]

没有任何东西最终被添加到top_name列表中。我被困在这部分上,想看看这是否是继续的正确方向,还是我应该尝试其他方法。 任何指导将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

您实际上不需要disliked_index列表。只需按照以下方式进行操作即可:

dis_pos = []
for name, sentiment in zip(names,user):
    if sentiment == 0:
        dis_pos.append(ranked_names.index(name))
mostpopular_unlikedname = ranked_names[min(dis_pos)]
print(mostpopular_unlikedname)

输出:

ryan