Удалить словарь по значению
Имеется список словарей:
a = [{"word": "c", "count": 4}, {"word": "dog", "count": 2}, {"word": "_restore", "count": 1}, {"word": "-f", "count": 5}....]
Необходимо удалить те словари, в которых значение длины ключа "word" равно 1 и первый символ равен одному из этих знаков ['-', '_']
Пробовала реализовать это следующим образом, но выводит список без изменений
sp = []
for i in range(0, len(a)):
if len(a[i]['word']) == 1 or a[i]['word'][0] in ['-', '_']:
del a[i]
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
лучше не удалять из списка, а собрать список заново:
a = [{"word": "c", "count": 4}, {"word": "dog", "count": 2}, {"word": "_restore", "count": 1}, {"word": "-f", "count": 5}]
a = [obj for obj in a if len(obj['word']) != 1 and obj['word'][0] not in ('_', '-')]
print(a)
кроме того у вас в условии написано И (в которых значение длины ключа "word" равно 1 и первый символ равен одному из этих знаков ['-', '_']), а в коде ИЛИ
я в примере привел вариант с ИЛИ
Но поскольку я не удаляю, а собираю список с нужными элементами, то условие такое:
размер не 1 и первый символ не '-' или '_'