我有一个看起来像这样的列表:
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')
但是我什至都没打过印刷声明,根本不确定如何找到它。
答案 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
希望这会有所帮助。