Что делаю не так ? Нужно удалить в списке словарей пустые значение и null

есть код который должен удалить пустые значение, но на выходе он выдает:

TypeError: 'NoneType' object is not subscriptable

Как можно это обойти или как сделать правильно ?

Сам код:

awe = ['null', '']
result = []
for res in list_1:
    if res['Client'] not in awe:
        result.append(res)
print(result)

входные данные:

    [
       {
          "Client": [],
          "description": ""
       },
       {
          "Client": [],
          "description": ""
       },
       null,
       {
          "Client": [],
          "description": ""
       },
       {
          "Client": [
             "Dima"
          ],
          "description": "UX"
       },
       null,
       {
          "Client": [
             "Andrey"
          ],
          "description": It "
       }]

Пытался удалить вначале в списке null а потом в словаре пустые значение, все равно ошибка


Ответы (2 шт):

Автор решения: Сергей

Оставаясь в вашей логике, надо:

  1. Заменить Null (не понимаю, как Python пропустил у вас в входных данных?) на None в входных данных;
  2. Сначала проверять на None (ошибку у вас выдает на этом сравнении, что логично. И ставим в одну строку в коде ниже, пользуясь правилом, что если первая проверка не проходит, то вторую не выполнит Python), а затем уже на пустой список в словаре, раз у вас там пустой список (а не на '').

Вот так работает - выдает [{'Client': ['Dima'], 'description': 'UX'}, {'Client': ['Andrey'], 'description': 'It'}]:

list_1=[
   {
      "Client": [],
      "description": ""
   },
   {
      "Client": [],
      "description": ""
   },
   None,
   {
      "Client": [],
      "description": ""
   },
   {
      "Client": [
         "Dima"
      ],
      "description": "UX"
   },
    None,
   {
      "Client": [
         "Andrey"
      ],
      "description": "It"
   }]

result = []
for res in list_1:   
    if res and res['Client'] !=[]:
            result.append(res)
print(result)
→ Ссылка
Автор решения: CrazyElf

Однострочник для разнообразия, в дополнение к ответу Сергея:

result = [res for res in filter(None, list_1) if res['Client']]
print(result)
→ Ссылка