Модуль коллекций Python: полное руководство

Python Collections — это встроенный модуль, который реализует специализированные типы данных контейнеров, предоставляя альтернативы встроенным контейнерам общего назначения Python, таким как словарь , list , set и кортеж . В дополнение к конкретным классам-контейнерам модуль коллекций предоставляет абстрактные базовые классы, которые можно использовать для проверки того, предоставляет ли класс определенный интерфейс, например, является ли он хешируемым или отображаемым.

Пример коллекций Python

Python collection похож на корзину, в которую вы можете добавлять и удалять элементы. В некоторых случаях это элементы одного типа, а в других — элементы разных типов. Это конструкция хранилища, которая позволяет нам собирать предметы.

Python модуль коллекций был представлен для улучшения функциональности встроенных контейнеров сбора. Модуль коллекций был впервые представлен в версии Python 2.4.

Коллекция сохранится в памяти. Вам не нужно собирать коллекцию или создавать какие-либо строительные леса.

Все это предоставляется бесплатно. Просто создайте экземпляр коллекции и начните добавлять свои элементы. Когда вы будете готовы, вы можете извлечь элементы по имени или по индексу (позиции в коллекции).

Модуль коллекций в Python

См. следующие коллекции Python.

  1. Counter
  2. defaultdict
  3. OrderedDict
  4. deque
  5. namedtuple ()

Counter

Коллекции Counter позволяют нам вести подсчет всех элементов, которые вставляются в коллекцию с ключами.

Counter — это подкласс словаря для подсчета хешируемых объектов. Это неупорядоченная коллекция, в которой элементы хранятся как ключи словаря, а их количество хранится как значения словаря.

Коллекции счетчиков могут иметь любое целочисленное значение, включая нулевое или отрицательное число. Класс Counter похож на пакеты или мультимножества в других языках.

См. следующий пример кода.

 # app.pyfrom collections import CounteraladdinChars = [('Jasmine', 30), ('Aladdin', 32), ('Gennie', 50), ('Jaffar  ', 40)] count = Counter (имя для имени, актуально в aladdinChars) print (count) 

См. Следующий вывод.

Таким образом, мы можем подсчитать, сколько раз ключ появлялся в списке.

Элементы подсчитываются из итерируемого или инициализируются из другого сопоставления (или счетчика).

 # app.py из коллекции import Counterc  = Counter (apple = 4, samsung = 8) print (c) 

См. Вывод.

Dict по умолчанию

Словарь по умолчанию может содержать повторяющиеся ключи. Преимущество использования словаря по умолчанию заключается в том, что мы может собирать элементы, принадлежащие одному ключу. Он возвращает новый объект, подобный словарю.

defaultdict — это подкласс встроенного класса dict .

Defaultdict переопределяет один метод и добавляет один доступный для записи экземпляр.

Остальные функции такие же, как для класса dict .

См. следующий пример кода.

 # app.pyfrom collections import defaultdictaladdinChars = [('Jasmine', 30), ('Aladdin', 32), ('  Gennie ', 50), (' Jaffar ', 40)] dict_chars = defaultdict (список) для ключа, значение в aladdinChars: dict_chars [ключ] .append (значение) print (list (dict_chars.items ())) 

См. вывод ниже.

Теперь давайте повторим значение Jasmine еще раз и посмотрим на результат.

 # app.pyfrom collections imp  ort defaultdictaladdinChars = [('Жасмин', 30), ('Жасмин', 30), ('Аладдин', 32), ('Дженни', 50), ('Джаффар', 40)] dict_chars = defaultdict (список)  для ключа значение в aladdinChars: dict_chars [key] .append (value) print (list (dict_chars.items ())) 

См. вывод ниже.

OrderedDict

С OrderedDict , порядок вставки сохраняется, когда ключ и значения вставляются в словарь.

Если мы попытаемся добавить ключ снова, это перезапишет предыдущее значение для этого ключа. Вот пример программы, демонстрирующей использование

 # app.pyfrom collection import OrderedDictaladdinChars = OrderedDict ([('Jasmine', 30),  ('Jasmine', 30), ('Aladdin', 32), ('Gennie', 50), ('Jaffar', 40)]) для ключа, значения в aladdinChars.items (): print (key, value)  

См. вывод ниже.

В приведенном выше примере вы можете видеть, что значение Jasmin повторяется еще раз, но на выходе оно появляется только один раз.

Это означает, что он удалит повторяющиеся значения, а также вы можете видеть, что он предоставил нам значения по порядку. Порядок вывода был таким же, как и порядок вставки.

Deque

Deque — это двусторонняя очередь, которая позволяет нам, чтобы добавить и удалить элементы с обоих концов. Это расширяет возможности стека или очереди.

Deques — это обобщение стеков и очередей (название произносится как «колода» и является сокращением от «двусторонняя очередь»).

Deques поддерживают потокобезопасные, эффективные с точки зрения памяти добавления и выталкивания с любой стороны двухсторонней очереди с примерно одинаковой производительностью O (1) в любом направлении.

См. следующий пример кода Deque на Python.

 # app.pyfrom collections import dequewebname = deque ('AppDividend') print ('Deque:', webname) print ('Queue Length:', len (webname)) print ('Левая часть  : ', webname [0]) print (' Правая часть: ', webname [-1]) webname.remove (' A ') print (' remove (После удаления A): ', webname) 

См. следующий результат.

Итак, удаление предметов из очереди было выполнено автоматически. Мы также можем добавлять элементы в Deque на определенном конце.

namedtuple

Кортежи Python — это неизменяемые списки. Это означает, что значение не может быть присвоено ключу, который уже существует в кортеже. Мы можем преобразовать этот кортеж в именованный кортеж, присвоив имя всем значениям, присутствующим в этом кортеже.

Это также придаст больше контекста имеющимся данным.

См. следующий код.

 # app.pyfrom collection import namedtuplePerson = namedtuple ('Employee', 'name age gender') data = Person (name = '  Крунал ', возраст = 26, пол =' M ') print (data) print (' Имя сотрудника: {0} '. Format (data.name)) 

См. Вывод ниже.

Итак, вот как мы можем получить доступ к свойствам именованный кортеж с предоставленным нами именем. Также помните, что имя ключа не может быть какими-либо ключевыми словами Python .

Наконец, пример модуля Python Collections завершен.

Оцените статью
nanomode.ru
Добавить комментарий