Как работает fromkeys python?
nomnoms12Вопрос:
Разбираю я одну задачу в python, а именно удаление дубликатов из списка. Решение словно я нашел, однако не могу разобраться, как оно работает. Можете объяснить данный код, правильно я понимаю, что списки в python не могут иметь дубликатов и метод fromkeys автоматически удаляет дубликаты?
list_of_numbers = [22, 3,5,2,8,2,-23, 8,23,5] list_of_numbers = list(dict.fromkeys(list_of_numbers)) print(list_of_numbers)
Ответ:
Списки могут иметь дубликаты. А вот словари не могут. Эту особенность словарей Вы и используете для удаления дубликатов.
fromkeys — это не просто метод, это метод класса. Он принимает итерируемый объект, содержащий ключи, и возвращает новый объект словаря. То есть после его вызова Вы получите:
{22: None, 3: None, 5: None, 2: None, 8: None, -23: None, 23: None}
Так как это уже словарь, дубликатов в нём нет. И Вы преобразуете его обратно в список (через конструктор list). В качестве элементов списка будут использованы ключи словаря:
[22, 3, 5, 2, 8, -23, 23]
Кстати, дубликатов также не имеет множество (set), поэтому можно упростить Ваш код так:
list_of_numbers = [*{*list_of_numbers}] # list(set(list_of_numbers))