Найти - Пользователи
Полная версия: Удаление ключ-значение по фильтру из списка словарей
Начало » Python для новичков » Удаление ключ-значение по фильтру из списка словарей
1
danilfg
Добрый день!
Необходимо удалить ключ значение из списка словарей:

Вот код:
 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 заходит.
Подскажите, пожалуйста, почему не удаляет?
FishHook
danilfg
ваш код можно сократить до

  leads = 
{
   'id': 'value1',
   'num': 123456,
   'status_id': 123,
   'group_id': 127
}
leads_copy = dict.copy(leads ) 
del leads_copy['id']
danilfg
FishHook
danilfgваш код можно сократить до
Прошу прощения не верно написал задачу:
Необходимо удалить ключ значение из списка словарей.
Rodegast
> ваш код можно сократить до

Не, он только id хочет оставить.
 leads = {
   'id': 'value1',
   'num': 123456,
   'status_id': 123,
   'group_id': 127
}
leads_copy = {"id": leads["id"]}
PEHDOM
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 у вас копия словаря с удаленным последним ключем.
danilfg
Всем спасибо!
Решение нашел:

leads =

test = copy.deepcopy(leads)
for i, elem in enumerate(leads):
for key in leads:
if key != ‘id’:
test.pop(key)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB