Уведомления

Группа в Telegram: @pythonsu

#1 Март 13, 2020 11:31:15

danilfg
Зарегистрирован: 2020-03-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление ключ-значение по фильтру из списка словарей

Добрый день!
Необходимо удалить ключ значение из списка словарей:

Вот код:

 leads = [{'id': 'value2', 'num': 523541, 'status_id': 321, 'group_id': 721},{'id': 'value1', 'num': 123456, 'status_id': 123, 'group_id': 127}]
def removekey(d, key): 
    r = dict.copy(d) 
    del r[key]
    return r 
for i, elem in enumerate(leads):
    for key in leads[i]:
        if key != 'id':
            test = removekey(leads[i], key)
То есть по сути хочу удалить все ключ-значение кроме ключа ‘id’.
Ошибок нет, но весь словарь остается и не удаляется, хотя в removekey заходит.
Подскажите, пожалуйста, почему не удаляет?

Отредактировано danilfg (Март 13, 2020 11:52:39)

Офлайн

#2 Март 13, 2020 11:47:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удаление ключ-значение по фильтру из списка словарей

danilfg
ваш код можно сократить до

  leads = 
{
   'id': 'value1',
   'num': 123456,
   'status_id': 123,
   'group_id': 127
}
leads_copy = dict.copy(leads ) 
del leads_copy['id']



Офлайн

#3 Март 13, 2020 11:53:32

danilfg
Зарегистрирован: 2020-03-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление ключ-значение по фильтру из списка словарей

FishHook
danilfgваш код можно сократить до
Прошу прощения не верно написал задачу:
Необходимо удалить ключ значение из списка словарей.

Офлайн

#4 Март 13, 2020 11:54:22

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Удаление ключ-значение по фильтру из списка словарей

> ваш код можно сократить до

Не, он только id хочет оставить.

 leads = {
   'id': 'value1',
   'num': 123456,
   'status_id': 123,
   'group_id': 127
}
leads_copy = {"id": leads["id"]}



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Март 13, 2020 13:23:56

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Удаление ключ-значение по фильтру из списка словарей

danilfg
Ошибок нет, но весь словарь остается и не удаляется, хотя в removekey заходит.
а что в removekey удаляется???
 def removekey(d, key): 
    r = dict.copy(d) 
    del r[key]
    return r
1. вы там создаете копию словаря.
2. удаляете из нее ключ.
3. возвращаете эту копию.
4. Исходный словарь не меняется.
5. при следующем вызове removekey, копия удаляется и goto1
6. по завершении цикла исходный словарь не меняется, в test у вас копия словаря с удаленным последним ключем.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#6 Март 13, 2020 13:50:19

danilfg
Зарегистрирован: 2020-03-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление ключ-значение по фильтру из списка словарей

Всем спасибо!
Решение нашел:

leads =

test = copy.deepcopy(leads)
for i, elem in enumerate(leads):
for key in leads:
if key != ‘id’:
test.pop(key)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version