Как проверить, находится ли пустой список внутри словаря внутри списка, и удалить этот объект dict из списка? - PullRequest
0 голосов
/ 25 января 2019

У меня есть список, который выглядит так:

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

Как удалить весь словарь, в котором внутри словаря присутствует пустой список, так что lst выглядит так:

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 голосов
/ 25 января 2019

Это может быть так просто, как:

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

Или, если вы хотите избежать KeyError, если отсутствует ключ 'email':

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

Для получения дополнительной информации о понимании списка: list-compreatsions-in-python

0 голосов
/ 25 января 2019

Я перефразирую вашу проблему настолько быстро, насколько я понял:

"Как удалить словарь из списка, если значение для ключа =" email "является пустым списком?"

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

здесь список предоставлен:

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

Больше информации дляметод списка pop здесь

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...