Удалить часть значения словаря
Всем привет, у меня есть словарь
directories = {
'1': ['2', '11'],
'2': ['3'],
'3': []
}
И я хотела бы удалять из него те значения, которые вводит пользователь.
Пользовательский ввод: 2
Результат:
directories = {
'1': ['11'],
'2': ['3'],
'3': []
}
Если я правильно понимаю функционал словарей, то я должна перезаписать ключи, но не понимаю как это реализовать. Спасибо
Ответы (1 шт):
Просто идете циклом по значениям в словаре (directories.values()), если в значении (списке) есть введенный элемент, то удаляем его из списка:
directories = {
'1': ['2', '11'],
'2': ['3'],
'3': []
}
doc_input = input('Введите номер документа: ')
for value in directories.values():
if doc_input in value:
value.remove(doc_input)
break
else:
# Дошли до конца цикла, и не было выхода через break
print("Документ не найден")
print(directories)
Тут происходит линейный поиск значений (последовательный перебор значений словаря, потом перебор элементов в списке), оптимальнее было бы хранить словарь, где ключи — это документы, а значения — директории, тогда поиск и удаление будет происходить за ~ константное время (т.к. поиск в хеш-таблице).