如何在含元组的电影数组中查找带续集标识“2”的影片名称
查找带数字后缀"2"的同名影片实现方法
核心逻辑
从给定的元组数组中筛选出名称符合「原有影片名+数字2」格式的影片,关键验证两点:
- 目标影片名以数字"2"结尾(含带空格的情况,比如"XX 2")
- 去掉"2"后的基础名称存在于数组的影片名列表中
代码实现示例
假设我们有如下影片数组:
films = [("阿凡达", 9.0), ("泰坦尼克号", 9.4), ("阿凡达2", 8.5), ("流浪地球", 7.9), ("流浪地球2", 8.3), ("复仇者联盟 2", 8.1), ("复仇者联盟", 8.2)]
方法一:基础后缀匹配(直接加"2")
先提取所有影片名称,再遍历筛选符合条件的项:
# 提取所有影片名称到列表 all_film_names = [name for name, _ in films] # 筛选以"2"结尾且基础名称存在的影片 target_films = [name for name, _ in films if name.endswith("2") and name[:-1] in all_film_names] print(target_films) # 输出: ['阿凡达2', '流浪地球2']
方法二:兼容带空格的后缀(如"XX 2")
如果存在带空格的后缀格式,可调整判断逻辑处理:
all_film_names = [name for name, _ in films] target_films = [] for name, rating in films: # 处理两种常见格式:"XX2" 和 "XX 2" if name.endswith(" 2"): base_name = name[:-2].strip() if base_name in all_film_names: target_films.append(name) elif name.endswith("2"): base_name = name[:-1].strip() if base_name in all_film_names: target_films.append(name) print(target_films) # 输出: ['阿凡达2', '流浪地球2', '复仇者联盟 2']
扩展说明
如果需要处理更复杂的后缀(如"Part 2"、"II"),只需调整后缀的匹配规则即可,核心思路始终是验证基础名称的存在性。
内容的提问来源于stack exchange,提问作者Python_Slayer
相关产品推荐
相关产品推荐

