Вы думаете, всё так просто? Да, всё просто. Но совсем не так... (Альберт Эйнштейн).
Зачастую при работе в Python возникает необходимость в объединении простых структур данных. Расскажу, как сделать это изящно для списков, множеств и словарей без нагромождения лишних строк кода.
Эффективные решения для объединения двух элементов и списка из таких элементов могут быть разные, поэтому для каждого типа данных рассмотрим оба кейса.
Множества
Для множества разницы нет. С помощью метода union мы можем перечислить имеющиеся множества или распаковать их список:
Более универсальным методом является использование функции chain модуля itertools, перебирающей элементы из всех составляющих списка:
Списки
Для объединения двух списков можно использовать оператор "+"
Для объединения списка списков воспользуйтесь все той же функцией chain:
Еще можно обобщить способ объединения двух списков с reduce из модуля functools, которая принимает функцию, последовательно обрабатывающую элементы итератора и в первом параметре сохраняет результат предыдущего шага:
Словари
Со словарями ситуация интереснее. Для объединения двух элементов в один можно распаковать их в новом словаре следующим образом:
А вот в случае работы со списком чуть сложнее, обычное применение chain не поможет, так как итерация происходит по ключам:
Но можно адаптировать входной параметр для применения с chain:
Еще можно воспользоваться как и в случае со списками функцией reduce:
Также для объединения списка словарей можно воспользоваться классом ChainMap, который как раз заменяет chain для случая словарей и действует аналогично: