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也在这里,一旦你弹出,就没有停止的方法了。谢谢,但是如果使用你的代码,我可以得到我喜欢的项目的计数,比如计数(动作)=?。