Python 基于将一个列表的值匹配到另一个列表的顺序返回值
我有四份清单:Python 基于将一个列表的值匹配到另一个列表的顺序返回值,python,list,Python,List,我有四份清单: user = [0,0,1,1] names = ["jake","ryan","paul","david"] disliked_index = [0,1] ranked_names = ["paul","ryan","david","jake"] 列表“用户”保存用户对列表“名称”中他们喜欢的名称的响应(1如果喜欢,0
user = [0,0,1,1]
names = ["jake","ryan","paul","david"]
disliked_index = [0,1]
ranked_names = ["paul","ryan","david","jake"]
列表“用户”保存用户对列表“名称”中他们喜欢的名称的响应(1如果喜欢,0如果不喜欢)。不喜欢的_索引保存用户在用户列表中指示为0的列表点。ranked_names根据数据集(多个学生)从最受欢迎到最不受欢迎进行排名。我试图实现的是返回用户响应他们不喜欢的最流行的名称。所以
mostpopular_unlikedname = "ryan"
到目前为止,我所做的是:
placement = []
for i in disliked_index:
a = names[i]
placement.append(a)
我现在有一个列表,其中包含用户不喜欢的名称
placement = ["jake","ryan"]
在这里,我的逻辑是运行一个循环,检查放置列表中的哪些名称出现在排名靠前的名称列表中,并按从最流行到最不流行的顺序添加到排名靠前的名称列表中
top_name =[]
for i in range(len(ranked_names)):
if ranked_names[i] == placement:
top_name.append[i]
没有任何东西会被添加到最上面的名字列表中。我被困在这一部分,想看看这是否是一个可以继续下去的方向,或者我是否应该尝试其他东西。
任何指导都将不胜感激,谢谢 您不需要为此列出
不喜欢的索引。按照这些思路做一些事情:
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
非常感谢你!这帮了我很大的忙,最后我把0改成了1,效果非常好。非常感谢!!