首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于项的公共切片文本对列表项进行分组

基于项的公共切片文本对列表项进行分组
EN

Stack Overflow用户
提问于 2021-02-24 08:20:44
回答 1查看 35关注 0票数 1

我有下面的列表,我想根据文本的'2020.0x‘片段进行分组。

代码语言:javascript
复制
mylist = ['c-2020.09.25.tif', 'c-.2020.09.12.masked.tif', 'c-.2020.09.13.masked.tif', 'c-.2020.09.26.masked.tif', 'c-.2020.08.11.masked.tif', 'c-.2020.07.24.masked.tif', 'c-.2020.07.16.masked.tif', 'c-.2020.07.09.masked.tif', 'c-.2020.08.21.masked.tif', 'c-.2020.8.09.masked']

到目前为止,我所做的是:

代码语言:javascript
复制
import itertools
key = lambda x: x[2:9] 
 

for key, group in itertools.groupby(mylist, key):
    print([str(list(group))])

但我得到了一个混乱的结果,一点也不像我预期的那样。欢迎任何想法!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 08:35:06

您需要将输入排序到groupby,否则这些组将被其他组分隔(这与bash中的sortuniq的工作方式相同)。此外,您的key=函数需要处理以"c-.“和"c-”开头而不带点的文件名。

代码语言:javascript
复制
import itertools

def get_year_and_month(filename):
    year, month, day, *rest = filename.split('-')[1].lstrip('.').split('.')
    return int(year), int(month)  # convert to int to handle missing leading 0
 
mylist = sorted(mylist, key=get_year_and_month)
for key, group in itertools.groupby(mylist, key=get_year_and_month):
    print(list(group))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66342920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档