fromitertoolsimportgroupbyfils=['a.jpg','a.png','b.jpg','c.jpg','c.png']res=groupby(fils,lambdas:s.split('.')[0])list_res=[(key,list(group))forkey,groupinresiflen(list(group))>1]print(list_res)我目的是分组后,过滤掉文件名只有1个的文件,例如过滤掉这里的b。但是在加了iflen(list(group))>1之后,输出是[('a',[]),('c',[])],所有group部分的结果都变成[]了。如果不加if,输出是[('a',['a.jpg','a.png']),('b',['b.jpg']),('c',['c.jpg','c.png'])],虽然没有达到我的结果,但是起码group部分的值保留了下来。请问这个if部分,应该怎么改,才能达到我要的效果,也就是输出[('a',['a.jpg','a.png']),('c',['c.jpg','c.png'])]。其实我已经用另一个方法做出来的。fils=['a.jpg','a.png','b.jpg','c.jpg','c.png']res=groupby(fils,lambdas:s.split('.')[0])list_res=[(key,list(group))forkey,groupinres]print(dict(filter(lambdax:len(x[1])>1,list_res)))看了一下几位大佬的回复,似乎也没有更优雅的解决办法。
森栏
倚天杖
相关分类