Добавление и обнвление информации в словарь
Есть следующий код:
pets = [('Hatiko', 'Parker', 'Wilson', 50),
('Rusty', 'Josh', 'King', 25),
('Fido', 'John', 'Smith', 28),
('Butch', 'Jake', 'Smirnoff', 18),
('Odi', 'Emma', 'Wright', 18),
('Balto', 'Josh', 'King', 25),
('Barry', 'Josh', 'King', 25),
('Snape', 'Hannah', 'Taylor', 40)]
def dog_owners(data_list):
result = {}
for [*element] in data_list:
key = (element[1], element[2], element[3])
value = element[0]
if result[key] not in result.keys():
result[key] = value
else:
result.update({key: value})
print(result)
dog_owners(pets)
Как реализовать добавление новых элементов в словарь, в которых ключ это кортеж из имени, фамилии и возраста хозяина, а значение это кличка собаки (если у хозяина несколько собак, то они быть перечислены через запятую)?
На данный момент мой код (см. выше) выдает ошибку KeyError, хотя не не понимаю почему.
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Вот так будет работать:
def dog_owners(data_list):
result = {}
for value,*key in data_list:
key = tuple(key)
if key not in result:
result[key] = [value]
else:
result[key].append(value)
print(result)
dog_owners(pets)
- Можно не мучиться с индексами, а сразу сделать распаковку/упаковку нужных позиций в
keyиvalue. - Проверка на вхождение ключа в словарь делается через
<key> in <dict>и.keys()можно при этом не писать. - Чтобы получить список значений в одном элементе словаря, нужно держать и пополнять именно список в качестве значения.