这 2 个不同的列表有 2 个不同的长度。所以我想根据分数合并它们。
我的示例输出如下所示
list1 = [
"ld Liked", "ld Disliked", "ld Liked", "ld Liked", "ld Disliked",
"ld Liked", "ld Disliked", "ld Liked", "ld Disliked", "ld Disliked",
"ld Liked", "ld Disliked", "ld Liked"
]
list2 = [
"score 10", "score 10", "score 10", "score 8.0", "score 10",
"score 6.0", "score 10", "score 8.0"
]
example of the output must be as follows after match
list[0] = liked and disliked : 10
list[1] = liked : 10
list[2] = liked and disliked : 10
list[3] = liked and disliked : 8.0
list[4] = liked and disliked : 10
list[5] = disliked : 6.0
list[6] = liked and disliked : 10
list[7] = liked : 8.0
我尝试使用 zip 来迭代它们,并使用一些 if 语句来检查它是否匹配,但它不起作用
我输出的目的是将评论与评分进行匹配,因为每个“评论”只有一个分数,但可能包含喜欢和不喜欢的字符串。
因此,如我的示例所示,评分将检查评论是否有“喜欢”或“不喜欢”,并将其视为单个实体。
每个评论都会以“喜欢”开始,除非没有“喜欢”,否则根据我的示例输出,只会有“不喜欢”
假设连续的喜欢和不喜欢应该被组合在一起贪婪地,你可以这样实现:
result = []
i = 0
likes = [like.split()[-1].lower() for like in list1]
for score in list2:
end = i + 1 + (likes[i:i+2] == ["liked", "disliked"])
result.append(f"{' and '.join(likes[i:end])} : {score.split()[-1]}")
i = end
print(result)
这假设列表的大小符合此逻辑的预期。您可能需要添加代码来验证情况是否确实如此(错误检查)。