如何用Python 3提取列表中各城市对应最高frame编号的图片?
解决方案:提取每个城市最高Frame值的图片文件名
这里有个简洁的Python 3实现思路,核心是用字典跟踪每个城市的最高frame记录,遍历列表后就能得到目标结果:
# 原始图片列表 image_list = [ "Ahmedabad_frame_1_vid_0.jpg", "Ahmedabad_frame_2_vid_1.jpg", "Ahmedabad_frame_3_vid_2.jpg", "Ahmedabad_frame_4_vid_3.jpg", "Bombay_frame_1_vid_0.jpg", "Bombay_frame_2_vid_1.jpg", "Bombay_frame_3_vid_2.jpg", "Bombay_frame_15_vid_3.jpg", "Cuttak_frame_1_vid_0.jpg", "Cuttak_frame_2_vid_1.jpg", "Cuttak_frame_3_vid_0.jpg", "Cuttak_frame_56_vid_3.jpg", "Delhi_frame_1_vid_0.jpg", "Delhi_frame_2_vid_1.jpg", "Delhi_frame_3_vid_2.jpg", "Delhi_frame_44_vid_3.jpg" ] # 字典用于存储每个城市对应的最高frame文件名 city_max_frame = {} for img_name in image_list: # 拆分文件名获取关键信息 parts = img_name.split('_') city = parts[0] frame_num = int(parts[2]) # 转换为整数方便比较 # 更新当前城市的最高frame记录 if city not in city_max_frame: city_max_frame[city] = img_name else: # 提取已有记录的frame数并比较 existing_frame = int(city_max_frame[city].split('_')[2]) if frame_num > existing_frame: city_max_frame[city] = img_name # 转换为目标列表格式 result = list(city_max_frame.values()) print(result)
代码说明:
- 用
city_max_frame字典追踪每个城市的最高frame文件,键为城市名,值为对应文件名 - 遍历每个文件名时,通过
split('_')拆分出城市和frame数值,将frame转为整数才能正确比较大小 - 遇到同一城市的文件时,对比当前frame与字典中已存的frame值,保留更大值对应的文件名
- 最后将字典的所有值转为列表,就是我们需要的结果
运行结果:
执行代码后会输出预期的列表:
["Ahmedabad_frame_4_vid_3.jpg", "Bombay_frame_15_vid_3.jpg", "Cuttak_frame_56_vid_3.jpg", "Delhi_frame_44_vid_3.jpg"]
内容的提问来源于stack exchange,提问作者Prathamesh Mohite
相关产品推荐
相关产品推荐

