2016-10-30 1 views
0

Если бы я хотел перебрать группу словарей, удалив все словари, где значение определенного ключа было равным нулю, как я мог это сделать? Я изначально пробовал код ниже, но, очевидно, не работает во многих случаях, так как длина группы уменьшается по мере удаления объектов.python итерационно удаляет словари с ключевым значением

data = [{'symbol': 'AA', 'sum': 0}, {'symbol': 'BB', 'sum': 0}, {'symbol': 'CC', 'sum': 10}] 

for i in range (0, len(data)): 
     if data[i]["sum"] == 0: 
      del data[i] 

ответ

1

Это не очень хорошая идея, чтобы удалить элементы из списка, когда вы переходите по списку.

Гораздо вещий решение будет:

data = [{'symbol': 'AA', 'sum': 0}, {'symbol': 'BB', 'sum': 0}, {'symbol': 'CC', 'sum': 10}] 
data = [x for x in data if x['sum'] != 0] 

Таким образом, мы создаем список, основанный на все предметы, у нас уже есть в data, если пункт [ «сумма»] = 0

Смежные вопросы