Что делаю не так ? Нужно удалить в списке словарей пустые значение и 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 шт):
Автор решения: Сергей
→ Ссылка
Оставаясь в вашей логике, надо:
- Заменить Null (не понимаю, как Python пропустил у вас в входных данных?) на
Noneв входных данных; - Сначала проверять на
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)