Как убрать дубликаты из словаря Python
Подскажите как отсортировать словарь только в рамках значений. Должно получиться так:
tasks = {
0: ["Покормить кота","Покормить кота"],
1: ["Покормить кота", "Забрать посылку"]
}
# Результат:
new_tasks = {
0: ['Покормить кота'],
1: ['Покормить кота', 'Забрать посылку']
}
Ответы (1 шт):
Решение:
new_tasks = {key: list(set(tasks[key])) for key in tasks}
(или: см. конец ответа).
Результат (в переменной new_tasks):
{0: ['Покормить кота'], 1: ['Покормить кота', 'Забрать посылку']}
Объяснение:
Я применил стандартную функцию set(), чтобы сделать множество из списка.
Таким образом Питон автоматически удалил дубликаты, потому что в множестве дубликатов не может быть по определению.
Затем я превратил это множество обратно в список применением стандартной функции list().
Более подробное объяснение:
Ваш оригинальный список можно представить себе как
{key: tasks[key] for key in tasks}
Но и теперь на значение ключа key, т.е. на
tasks[key]
(оригинальный список с возможными дубликатами)
примените выше упомянутые функции set() и list(), получая
list(set(tasks[key]))
Примечание:
Кому-то может более понравиться решение
new_tasks = {key: list(set(value)) for key, value in tasks.items()}
(Может быть и мне. ;-))