Не понимаю как добавить множество значений для ключа
есть вот такое условие задачи:
Напишите функцию update_dictionary(d, key, value), которая принимает на вход словарь d и два числа: key и value.
— Если ключ key есть в словаре d, то добавьте значение value в список, который хранится по этому ключу.
— Если ключа key нет в словаре, то нужно добавить значение в список по ключу 2 * key. Если и ключа 2 * key нет, то нужно добавить ключ 2 * key в словарь и сопоставить ему список из переданного элемента [value].
Я написал вот такой код:
d = {}
def update_dictionary(d, key, value):
if key in d:
d[key] = [value]
elif key * 2 in d:
d[key * 2] = [value]
elif key not in d:
d[key * 2] = [value]
На выходе должно получаться вот это:
print(update_dictionary(d, 1, -1)) # None
print(d) # {2: [-1]}
update_dictionary(d, 2, -2)
print(d) # {2: [-1, -2]}
update_dictionary(d, 1, -3)
print(d) # {2: [-1, -2, -3]}
А получается вот это
print(update_dictionary(d, 1, -1)) # None
print(d) # {2: [-1]}
update_dictionary(d, 2, -2)
print(d) # {2: [-2]}
update_dictionary(d, 1, -3)
print(d) # {2: [-3]}
Я использовал добавление значений в список, но это не помогло (список обнулялся), также использовал метод setdefault, update - также ни к чему не привело.
Крайне благодарен за любую помощь. Спасибо!
Ответы (2 шт):
d = {}
def update_dictionary(d, key, value):
if key in d:
d[key] = d[key] + [value]
elif key * 2 in d:
d[key * 2] = d[key * 2] + [value]
else:
d[key * 2] = [value]
print(update_dictionary(d, 1, -1)) # None
print(d) # {2: [-1]}
update_dictionary(d, 2, -2)
print(d) # {2: [-1, -2]}
update_dictionary(d, 1, -3)
print(d)
{2: [-1]}
{2: [-1, -2]}
{2: [-1, -2, -3]}
Для обновления существующего списка нужно использовать list.append(). Вы каждый раз при выполнении условия создаете новый список с элементом value
Если опустить проверки элементов на типы, то можно такой вариант решения использовать:
def update_dictionary(d, key, value):
if d.get(key):
d[key].append(value)
else:
if d.get(2 * key):
d[2 * key].append(value)
else:
d[2 * key] = [value, ]
d = {}
print(update_dictionary(d, 1, -1)) # None
print(d) # {2: [-1]}
update_dictionary(d, 2, -2)
print(d) # {2: [-1, -2]}
update_dictionary(d, 1, -3)
print(d) # {2: [-1, -2, -3]}
Вывод:
None
{2: [-1]}
{2: [-1, -2]}
{2: [-1, -2, -3]}