如何使用Python从字典的列表中移除空条目

1 投票
2 回答
1333 浏览
提问于 2025-04-17 19:44

我有一个字典,里面的内容像这样:

data = {'Fruits' : ['Mango', 'Banana', '', '', 'Apple'],
        'Trees' : ['Pine', 'Bamboo', '', '', '', '', ''],
        'Laptops' : ['Sony', '', '', 'LG', 'Acer', '']}

我想把字典里每个列表中的空项都去掉,这样处理后应该像这样:

data = {'Fruits' : ['Mango', 'Banana', 'Apple'],
        'Trees' : ['Pine', 'Bamboo'],
        'Laptops' : ['Sony', 'LG', 'Acer']}

2 个回答

0

你可以在itertools里使用ifilter。

from itertools import ifilter

for key,val in data.iteritems():
    data[key] = list(ifilter(lambda x: x!='', val))
3

使用字典推导式和 filter() 函数:

data = {k: filter(bool, v) for k, v in data.iteritems()}

或者,如果你使用的是 Python 2.6 及更早版本,还没有字典推导式:

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']}

撰写回答