Модуль 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! 😉
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий