2015-07-27 4 views
-1

Я пытаюсь удалить ненужные записи из словаря. Словарь выглядит следующим образом:Python удалить запись из словаря по значению

{ "Id":101119  ,"entry1":50009987 ,"entry2":8  ,"entry3":4 } 

и мой код:

import json 

value = 2 

with open(path, 'r') as json_input: 
    unfiltered = json.load(json_input) 

for row in unfiltered: 
    id = row['Id'] 
    if row[field] is None: 
     del output[id] 
    elif int(row[field]) != value: 
     del output[id] 

Однако я получил ошибку:

KeyError: 101119

Как я могу это исправить?

Большое спасибо.

+0

Итак, где вы настройки 'value' ? –

+0

Ну, «101119» не является ключом в вашем словаре. –

+0

Где «поле» получает значение? Это может быть неправильный тип ('101119' или' 101119''?). (Также неясно, какой 'dict' бросает ошибку,' row' или 'output'.) – chepner

ответ

2

Вы не можете удалить пару ключ-значение из словаря, если знаете только его значение. Одна из возможных альтернатив - создать новый словарь из старого, отфильтровывая значения, которые вы не хотите. Пример:

d = {4: 8, 15: 16, 23: 42, 99: 8} 
d = {key: value for key, value in d.items() if value != 8} 
print(d) 

Результат:

{15: 16, 23: 42} 

Я не 100% понимаю ваш пример кода, но я ожидаю, что вы могли бы сделать:

output = {key: value for key, value in output.items() if value != id} 
+0

Вы можете удалить ключ _first_ с этим значением или ключ _every_ с этим значением (например, как обычно работают операции с строкой). Точка заключается в том, что ключи уникальны, но значения не являются (обязательно). –

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