如何检查空列表是否在列表内部的字典中,并从列表中删除该字典对象?

时间:2019-01-25 17:51:48

标签: python-3.x list dictionary

我有一个看起来像这样的列表:

lst = [{'email':['test@test.com']},{'email':['test1@test1.com']},{'email':[]},{'email':['test2@test2.com']}]

我如何删除整个词典中存在空列表的整个词典,所以第一次看起来是这样的:

lst = [{'email':['test@test.com']},{'email':['test1@test1.com']},{'email':['test2@test2.com']}]

我尝试过了

if not any(d['email'] == '' for d in lst):
    print('not there')

但是我什至都没打过印刷声明,根本不确定如何找到它。

2 个答案:

答案 0 :(得分:1)

这可能很简单:

lst = [d for d in lst if d["email"]]

或者,如果您想避免在缺少“电子邮件”键的情况下发生KeyError:

lst = [d for d in lst if d.get("email", [])]
  

有关列表理解的更多信息:list-comprehensions-in-python

答案 1 :(得分:0)

只要我明白我的意思,我就会迅速改一下你的问题:

“如果key =“ email”的值为空列表,如何从列表中删除字典?“

for i, dictionary in enumerate(lst): 
    if not dictionary["email"]: 
        lst.pop(i)

这里lst是提供的列表:

[{'email':['test@test.com']},{'email':['test1@test1.com']},{'email':[]},{'email': ['test2@test2.com']}]

结果是:

print(lst)
>>> [{'email':['test@test.com']},{'email':['test1@test1.com']},{'email':['test2@test2.com']}]

有关列表方法的更多信息,弹出here

希望这会有所帮助。