Модуль collections
в Python предоставляет специализированные контейнеры для удобства работы с данными. В этой статье мы рассмотрим основные контейнеры, которые вам могут пригодиться в повседневном программировании на Python.
namedtuple
namedtuple
— это фабрика для создания классов-кортежей с именованными полями. Они похожи на обычные кортежи, но у них есть имена полей, что делает их более удобными для работы.
from collections import namedtuple Person = namedtuple("Person", ["name", "age", "gender"]) person = Person("Alice", 30, "female") print(person.name) # Alice print(person.age) # 30
Counter
Counter
— это подкласс словаря, который предназначен для подсчета количества элементов. Он принимает итерируемый объект и возвращает словарь с количеством каждого элемента.
from collections import Counter words = ["apple", "banana", "orange", "apple", "banana", "apple"] word_count = Counter(words) print(word_count) # Counter({'apple': 3, 'banana': 2, 'orange': 1})
defaultdict
defaultdict
— это подкласс словаря, который используется, когда нужно предоставить значение по умолчанию для ключей, которые еще не существуют в словаре.
from collections import defaultdict d = defaultdict(int) d["a"] += 1 d["b"] += 2 print(d) # defaultdict(<class 'int'>, {'a': 1, 'b': 2})
OrderedDict
OrderedDict
— это подкласс словаря, который сохраняет порядок вставки элементов. В Python 3.7+ обычные словари также сохраняют порядок вставки, но OrderedDict
предоставляет дополнительные методы, такие как move_to_end()
.
from collections import OrderedDict d = OrderedDict() d["apple"] = 1 d["banana"] = 2 d["orange"] = 3 print(d) # OrderedDict([('apple', 1), ('banana', 2), ('orange', 3)])
deque
deque
(двусторонняя очередь) — это обобщение стеков и очередей, которое поддерживает добавление и удаление элементов с обеих сторон. Они особенно полезны, когда нужно быстро добавлять или удалять элементы.
from collections import deque d = deque([1, 2, 3]) d.appendleft(0) d.append(4) print(d) # deque([0, 1, 2, 3, 4])
Использование модуля collections
может значительно упростить ваш код и сделать его более эффективным. Не забывайте изучать и другие возможности этого модуля, чтобы стать еще более продуктивным разработчиком на Python! 😉
Добавить комментарий