@sharkyyy3

Как удалить словарь из списка словарей?

Есть переменная item:
item = 75648
И список que:
que =[{'user': {85555: {'search': 1, 'sex': 1}}},{'user': {75648: {'search': 2, 'sex': 2}}}, {'user': {85587: {'search': 1, 'sex': 1}}}]

Если переменная item == 'user' то нужно удалить весь {'user': {75648: {'search': 2, 'sex': 2}}} словарь из списка que.
Пробовал таким способом удалить:
spoiler
for name in range(len(que)):
      print(que[name]['user'].keys())
       if item in que[name]['user'].keys():
           del que[name]


Получаю ошибку:
if item in que[name]['user'].keys():
IndexError: list index out of range
  • Вопрос задан
  • 1215 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
que = [i for i in que if item not in i['user']]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
netpastor
@netpastor
Python developer
item = 75648
que =[{'user': {85555: {'search': 1, 'sex': 1}}},{'user': {75648: {'search': 2, 'sex': 2}}}, {'user': {85587: {'search': 1, 'sex': 1}}}]
new_que = [q for q in que if item not in q['user'].keys()]
new_que
Out[5]: 
[{'user': {85555: {'search': 1, 'sex': 1}}},
 {'user': {85587: {'search': 1, 'sex': 1}}}]

И еще на лицо косяки в проектировании словарей для хранения данных
que =[
    {'user': 85555, 'search': 1, 'sex': 1},
...
]

куда более удобно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы