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個(gè)的文件,例如過濾掉這里的b。但是在加了iflen(list(group))>1之后,輸出是[('a',[]),('c',[])],所有g(shù)roup部分的結(jié)果都變成[]了。如果不加if,輸出是[('a',['a.jpg','a.png']),('b',['b.jpg']),('c',['c.jpg','c.png'])],雖然沒有達(dá)到我的結(jié)果,但是起碼group部分的值保留了下來。請(qǐng)問這個(gè)if部分,應(yīng)該怎么改,才能達(dá)到我要的效果,也就是輸出[('a',['a.jpg','a.png']),('c',['c.jpg','c.png'])]。其實(shí)我已經(jīng)用另一個(gè)方法做出來的。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)))看了一下幾位大佬的回復(fù),似乎也沒有更優(yōu)雅的解決辦法。
python列表列表推導(dǎo)式為何加了if之后數(shù)據(jù)就沒了求解答!
哈士奇WWW
2019-08-11 14:06:02