首页 > 解决方案 > 每个组的最高 x 列表

问题描述

a_list = [
'img_229_152_webp_1x', 
'img_229_152_webp_2x', 
'img_229_152_webp_3x', 
'img_229_152_webp_4x', 
'img_229_152_webp_5x', 
'img_246_164_webp_1x', 
'img_246_164_webp_2x', 
'img_246_164_webp_3x', 
'img_246_164_webp_4x']

这里我们有两组图像:img_229_152_webp_5x''img_246_164_webp_4x'

列表已排序。而对于最后一部分(\d+x),每组图像都是一个等差数列,不可能有缺失的元素。不可能的情况示例:1x、2x、4x。

你能帮我得到每组最高 x 的列表吗?在这种情况下:[img_229_152_webp_5x', 'img_246_164_webp_4x']

标签: pythonpython-3.x

解决方案


使用groupby您可以根据前缀进行分组,然后从每个组中获取最大值:

import itertools

for k, g in itertools.groupby(a_list, key=lambda s: s.rsplit('_', 1)[0]):
    print(max(g, key=lambda s: s.rsplit('_', 1)[-1]))

给出:

img_229_152_webp_5x
img_246_164_webp_4x

推荐阅读