Как убрать дубликаты из словаря Python

Рейтинг: -2Ответов: 1Опубликовано: 25.04.2023

Подскажите как отсортировать словарь только в рамках значений. Должно получиться так:

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()}

(Может быть и мне. ;-))