合并2个不同长度的独立列表,无需索引

问题描述 投票:0回答:1

这 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 语句来检查它是否匹配,但它不起作用

我输出的目的是将评论与评分进行匹配,因为每个“评论”只有一个分数,但可能包含喜欢和不喜欢的字符串。

因此,如我的示例所示,评分将检查评论是否有“喜欢”或“不喜欢”,并将其视为单个实体。

每个评论都会以“喜欢”开始,除非没有“喜欢”,否则根据我的示例输出,只会有“不喜欢”

python-3.x list iteration
1个回答
0
投票

假设连续的喜欢和不喜欢应该被组合在一起贪婪地,你可以这样实现:

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)

这假设列表的大小符合此逻辑的预期。您可能需要添加代码来验证情况是否确实如此(错误检查)。

© www.soinside.com 2019 - 2024. All rights reserved.