[英]How to remove empty entries from a list in a dictionary using python
我有一本这样的字典:
data = {'Fruits' : ['Mango', 'Banana', '', '', 'Apple'],
'Trees' : ['Pine', 'Bamboo', '', '', '', '', ''],
'Laptops' : ['Sony', '', '', 'LG', 'Acer', '']}
如何从字典中的每个列表中删除所有EMPTY项目,所以看起来可能像这样:
data = {'Fruits' : ['Mango', 'Banana', 'Apple'],
'Trees' : ['Pine', 'Bamboo'],
'Laptops' : ['Sony', 'LG', 'Acer']}
使用dict理解和filter()
:
data = {k: filter(bool, v) for k, v in data.iteritems()}
或者,对于python 2.6和更早的版本,您还没有dict理解:
data = dict((k, filter(bool, v)) for k, v in data.iteritems())
或对值的列表理解(如果您使用的是Python 3:
data = {k: [i for i in v if i] for k, v in data.iteritems()}
快速演示:
>>> data = {'Fruits' : ['Mango', 'Banana', '', '', 'Apple'],
... 'Trees' : ['Pine', 'Bamboo', '', '', '', '', ''],
... 'Laptops' : ['Sony', '', '', 'LG', 'Acer', '']}
>>> {k: filter(bool, v) for k, v in data.iteritems()}
{'Laptops': ['Sony', 'LG', 'Acer'], 'Trees': ['Pine', 'Bamboo'], 'Fruits': ['Mango', 'Banana', 'Apple']}
您可以在itertools中使用ifilter
from itertools import ifilter
for key,val in data.iteritems():
data[key] = list(ifilter(lambda x: x!='', val))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.