Python 从列表中的列表中删除空值

Python 从列表中的列表中删除空值,python,regex,list,Python,Regex,List,我需要关于如何从列表中删除空字符串的帮助 res = [ ['', 'ACTION', 'ADVENTURE', 'FANTASY', ''], ['', 'ACTION', 'DRAMA', 'ROMANCE', ''], ['', 'HISTORY', 'ROMANCE', 'WAR', ''], ['', 'DRAMA', 'THRILLER', ''], ['', 'DRAMA', 'THRILLER', ''], ['', 'COMEDY', 'DRAMA', 'ROMANC

我需要关于如何从列表中删除空字符串的帮助

res = [ ['', 'ACTION', 'ADVENTURE', 'FANTASY', ''],
 ['', 'ACTION', 'DRAMA', 'ROMANCE', ''],
 ['', 'HISTORY', 'ROMANCE', 'WAR', ''],
 ['', 'DRAMA', 'THRILLER', ''],
 ['', 'DRAMA', 'THRILLER', ''],
 ['', 'COMEDY', 'DRAMA', 'ROMANCE', ''],
 ['', 'ADVENTURE', 'COMEDY', ''],
 ['', 'ACTION', 'THRILLER', '']]
如果是

res = ['', 'ACTION', 'ADVENTURE', 'FANTASY', '']
我愿意

res = [x for x in res if x ]
但如何从列表中删除。 请建议

我还需要从列表中找到每件物品的数量,例如,动作数量,惊悚片数量。

试试这个

res1 = [[i for i in j if i] for j in res]
dictt = {}
[[dictt.__setitem__(i, dictt.setdefault(i, 0) + 1) for i in j] for j in res1]

映射并过滤res列表:

map(lambda x:filter(lambda y: y != "", x), res)


>>> map(lambda x:filter(lambda y: y != "", x), res)
[['ACTION', 'ADVENTURE', 'FANTASY'], ['ACTION', 'DRAMA', 'ROMANCE'], ['HISTORY', 'ROMANCE', 'WAR'], ['DRAMA', 'THRILLER'], ['DRAMA', 'THRILLER'], ['COMEDY', 'DRAMA', 'ROMANCE'], ['ADVENTURE', 'COMEDY'], ['ACTION', 'THRILLER']]
计数:

import collections
c = Counter(reduce(lambda x, y: x+y, filtered_res))

>>> filtered_res= map(lambda x:filter(lambda y: y != "", x), res)
>>> c = Counter(reduce(lambda x, y: x+y, filtered_res))
>>> c["DRAMA"]
4

使用“老式”for循环,可以删除空条目并按类别获取总计数:

res = [ ['', 'ACTION', 'ADVENTURE', 'FANTASY', ''],
 ['', 'ACTION', 'DRAMA', 'ROMANCE', ''],
 ['', 'HISTORY', 'ROMANCE', 'WAR', ''],
 ['', 'DRAMA', 'THRILLER', ''],
 ['', 'DRAMA', 'THRILLER', ''],
 ['', 'COMEDY', 'DRAMA', 'ROMANCE', ''],
 ['', 'ADVENTURE', 'COMEDY', ''],
 ['', 'ACTION', 'THRILLER', '']]

counts = {}
cleaned = []
for categories in res:        
    cleaned.append([]);
    for category in categories:        
        if category !='':           
            cleaned[-1].append(category) 
            if category in counts:
                counts[category]= counts[category] +1
            else:
                counts[category]=1;            

print counts['ACTION']

从每个组件中删除第一个和最后一个元素sublist@Tushar这取决于这样一种假设,即他们总是在这种结构中,但情况可能并非如此。如果你可以发布单独的问题,而不是将问题合并成一个问题,那么这是首选。这样,它可以帮助人们回答你的问题,也可以帮助其他人寻找至少一个你的问题。谢谢@martineau通过这个,我得到了res列表(主列表或父列表)中的项目数,即:e8。但是我想找到动作的数量,然后是喜剧的数量,就像wise一样。不,相反,我得到的是无价值代替了每一项。你会在DICT中得到数量。在我这边,它工作得很好。@user2393267谢谢。但在执行时,为什么会有一些行显示那些无值列表。你能解释一下吗?请告诉我如何获得每个项目的计数。我非常喜欢使用reduce。我现在也可以使用计数器了,很高兴知道。@AkshayHazari、map、reduce和所有内置函数都比循环快,例如,使用它们总是一个很好的实践。函数式编程也很有趣:啊。在启动python和查找map、reduce(foldr)、filter之前,我已经做了一些Haskell编码,不可能不使用它们。是的,haskeller也在这里,一旦你弹出,就没有停止的方法了。谢谢,但是如果使用你的代码,我可以得到我喜欢的项目的计数,比如计数(动作)=?。