Как удалить весь словарь из списка словарей, если указанный ключ c пуст? - PullRequest
0 голосов
/ 09 мая 2020

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

[{'Date': 'Jul 26', 'Time': '07:04:12', 'PID': '28886', 'Message': 'authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=207.243.167.114  user=root', 'Access Type': 'Failed', 'host/IP address': '207.243.167.114'}
{'Date': 'Jul 27', 'Time': '04:16:07', 'PID': '30999', 'Message': 'session opened for user cyrus by (uid=0)', 'Access Type': 'Success', 'host/IP address': ''}
{'Date': 'Jul 27', 'Time': '04:16:08', 'PID': '30999', 'Message': 'session closed for user cyrus', 'Access Type': '', 'host/IP address': ''}]

Я хочу удалить весь словарь, где «Тип доступа» == ''

Я пробовал это, но это удаляет все словари, пока значение в нем пустое, но я хочу только специально для «Тип доступа»

[d for d in data if all(d.values())]

1 Ответ

1 голос
/ 09 мая 2020

Вы можете использовать понимание списка, чтобы проверить, не является ли Access Type пустым:

[d for d in data if d["Access Type"]]

Или явно проверить "":

[d for d in data if d["Access Type"] != ""]

Первый работает, потому что пустые строки "" считаются False в контексте проверки истинности. Вы можете посмотреть Проверка истинности в документации для получения дополнительной информации.

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