我有四个列表:
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列表中。我被困在这部分上,想看看这是否是继续的正确方向,还是我应该尝试其他方法。 任何指导将不胜感激,谢谢!
答案 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