如何实现根据二维列表中字符串重复出现提取对应数值?
解决方法
没问题,我来帮你搞定这个需求!核心思路就是先找出那些重复出现的字符串,再把对应子列表里的数值提取出来。下面是具体的Python实现方案:
代码示例
from collections import defaultdict # 先修正原列表的语法错误(补全字符串引号) table = [[3, 'AVENGERS', 'PACIFIC'], [1, 'A WALK,DRAGONBALL'], [2, 'A WALK,DRAGONBALL'], [5, 'A WALK,DRAGONBALL'], [6, 'JAMES BOND,MISSION'], [7, 'JAMES BOND,MISSION']] # 第一步:统计每个字符串的出现次数 str_occurrences = defaultdict(int) for row in table: # 遍历子列表中除第一个数值外的所有字符串 for string in row[1:]: str_occurrences[string] += 1 # 第二步:筛选出重复出现的字符串 repeated_strings = {s for s, count in str_occurrences.items() if count > 1} # 第三步:提取对应数值 target_numbers = [] for row in table: # 检查当前子列表是否包含重复字符串 if any(s in repeated_strings for s in row[1:]): target_numbers.append(row[0]) print(target_numbers) # 输出结果:[1, 2, 5, 6, 7]
步骤解释
- 统计次数:用
defaultdict轻松计数每个字符串的出现次数,遍历每个子列表时只关注数值后面的字符串元素。 - 筛选重复字符串:从统计结果里挑出出现次数大于1的字符串,这些就是我们要追踪的目标。
- 提取数值:再次遍历原列表,只要子列表里包含任何一个重复字符串,就把该子列表的第一个数值元素收集起来。
这个方案还兼容像第一个子列表那样包含多个字符串的情况,哪怕其中有一个重复字符串,也会正确提取对应的数值哦。
内容的提问来源于stack exchange,提问作者clink
相关产品推荐
相关产品推荐

