Гладкая коллекции модуль питона

Модуль коллекции предоставляет структуры данных, отличные от общих структур данных питона, в несколько

  • namedtuple () : Специальный кортеж подкласс может использовать для доступа к списку имен и подстрочный
  • двусторонняя очередь : Deque, с другой стороны , может быть быстро и дополнительные объекты Release
  • Счетчик : счетчик для подсчета основных
  • OrderedDict : упорядоченный словарь
  • defaultdict : Словарь со значениями по умолчанию
  • ChainMap: Словарь-подобные контейнеры, множество карт, которые установлены с целью

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

#! / USR / бен / python3 
# - * - кодирование: UTF-8 - * - 
из коллекции импорта namedtuple 

человек = [ 
    ( '男', '1988-04-11', '张三'), 
    ( '女' , '1993-03-26', '李四'), 
    ( '男', '1990-06-02', '王五') 
] 
Person = namedtuple ( 'человек', [ 'секс', 'день рождения' , 'имя']) 
# Person = namedtuple ( 'человек', ( 'секс', 'день рождения', 'имя')) 
# Person = namedtuple ( 'человек', 'секс, день рождения, имя') 
# Person = namedtuple ( 'человек', 'секс имя день рождения') , 

если __name__ == '__main__': 
    для человека у лиц: 
        лица = Person.сделать _резервный (Человек) 
        # может быть созданы сделать _резервный (тип кортежа) или вызывает новый метод 
        # людей = Человек (лицо [0 ], человек [1], человек [2]) 
        Печать (Человек)
        печать (person.name, человек [0])


 выход:

человек (пол = 'M', день рождения = '1988-04-11', имя = ' Джо Смит') 
Чжан M 
человек (пол = 'F', день рождения = '1993-03-26', имя = ' John Doe «) 
John Doe женского 
лица (пол =» мужчина «день рождения =» 1990-06-02 « имя =» король пять «) 
Ван пять человек

 

Примечание: namedtuple (parm1, parm2)

      parm1 имена конструктора, parm2 может быть список, кортежи, или строка

      Parm2 количество элементов и количество параметров, которые необходимо пройти те же параметры, такие как: Person ( «M», «1988-04-11», «John Doe», «1383333333») будет дан ожидаемый 3-х аргументов, получил 4

 

и

collections.dequeВозвращает новый доступ усиления дека объекта к концам очередей, поддержка безопасности резьбы, для добавления (Append) на обоих концах с или хлопнутой (POP), сложность O (1).
Несмотря на то, что listобъект поддерживает подобную операцию, комплексная группа О (п) , тем больше возрастает потребление как длина списка ,
если по умолчанию MaxLen Тем не, он не может расти на любую длину. В противном случае, Deque будет ограничена определенной максимальной длиной. После определенного DEQUE полной длины, при добавлении новой записи, такое же количество пунктов всплывающего окна с другого конца.
Поддерживаемые методы:

  • Append (х): х добавляется справа
  • appendleft (х): х добавляется слева
  • ясно (): очистить все элементы, длина становится равной 0
  • копия (): Создает неполную копию
  • кол-(х): рассчитано число равно элементу х очереди
  • расширить (итерация): аддитивный элемент в очереди правой Iterable
  • extendleft (итерация): дополнительный элемент в очереди Iterable левой Примечание: при добавлении левого получится порядок, чтобы добавить параметр Iterable
  • Индекс (х [, начать [, остановку]]): Возвращает й-й элемент (от начала и до начала, до остановки). Возвращает первый матч, если не найден, поднимая ValueError.
  • вставить (я, х): я вставляется в положении х. Примечание: При вставке приведет к длинному за дек предела длины MAXLEN, то он поднимается IndexError.
  • поп (): удалить элементы ультраправых
  • popleft (): удаления самого левого элемента
  • удалить (значение): Удалить первое найденное значение. Не бросать ValueError
  • обратный (): двусторонний очередь в обратном порядке. Возвращение не None.
  • MaxLen: максимальная длина очереди, пока не был ограничен Отсутствуют.
    из коллекции импортировать дека 
    D = Deque (MaxLen = 10 )
     для печати (d) 
    d.extend ( ' привет мир ' ) 
    [i.upper () для I в г] 
    [ ' Р ' , ' Y ' , ' Т ' , ' Н ' ' О ' ' N ' ] 
    d.append ( ' е ' ) 
    d.appendleft ( 'е ' )
     печати (г) 
выход:
Deque ([], MaxLen = 10)
Deque ([' е ' 'L', 'L', 'о', '', 'W', 'о',' г », 'L', 'd'], MaxLen = 10)

 



счетчик

Счетчик представляет собой ДИКТ подкласс в основном используется для доступа к пунктам заданной частоты.
Общие методы:

  • элементы (): возвращает итератор, число повторных вычислений для каждого элемента, элемента, если число меньше 1, будет проигнорировано.
  • most_common ([N]): возвращает список п наиболее часто , чтобы обеспечить доступ элемент и подсчета ChainMap
  • вычесть ([итерацию или-отображение]): итерационные вычитая элементы из объекта, на входе и выходе может быть 0 или отрицательным
  • Обновление ([итерация или-отображение]): объекты числа итераций или добавить элементы из другой карты от объекта (или счетчика).
    импорт коллекции
     печати (collections.Counter ( ' привет мир ' ))
     # 统计单词数
    печати (collections.Counter ( ' привет мир привет мир привет Nihao ' .split ())) 
Выход:
Счетчик ({ 'л': 3 ' о ': 2 'г': 1, 'W': 1, 'ч': 1, 'd': 1, 'е': 1,' ': 1})
Счетчик ({' Привет ': 3, 'мир': 2, 'Nihao': 1})

OrderedDict

Python словарь упорядоченность ключей расстройства, последовательное управление не добавляется.
collections.OrderedDictДобавить зарезервированный объект словаря прикажут.

    из коллекций импортировать OrderedDict 
    demo_dict = { " " : 1, " б " : 2, " с " : 3 } 
    order_dict = OrderedDict (demo_dict)
     печати (demo_dict, order_dict) 
    demo_dict [ ' s ' ] = 5
     печати (demo_dict) 
    order_dict [ ' s ' ] = 5
     печать (order_dict) выход: { 'B': 2, 'а': 1, 'с': 3} OrderedDict ([( 'B', 2), ( 'а', 1) ,( 'с', 3)]) {


'S': 5 'B': 2, 'а': 1, 'с': 3}
OrderedDict ([( 'B', 2), ( 'A', 1), ( 'с', 3) , ( 's', 5) ])

defaultdict

defaultdict(factory)Предоставлять значение по умолчанию не является ключом словаря. Аргумент должен быть функцией, которая возвращает значение по умолчанию, если параметры вызова. Если вы ничего не проходит, то по умолчанию None

 

из коллекции импорта defaultdict 
demo_dict = {}
 попробовать :
     печать (demo_dict [ ' ы ' ]) # KeyError 
кроме :
     пройти 
default_dict = defaultdict (ул) 
default_dict [ ' s ' ]
 печать (demo_dict)
 печать (default_dict) 

выход:
{}
defaultdict ( <класс 'ул'>, { 's': ''})

ChainMap

ChainMap сумма, эквивалентная более чем словарь.

из коллекции импортировать ChainMap 
d1 = { " A " : 1, " Ъ " : 2, " аа " : 1 } 
d2 = { " аа " : 11, " бб " : 22, " б " : 3 } 
с.о. = ChainMap ( d1, d2)
 печати (сд) 

для K, V в sd.items ():
     печать (K, V) 

выход:
ChainMap ({ 'аа': 1, 'а': 1, 'B': 2}, { «б»:3, 'бб': 22, 'аа': 11})
1 2 из
1 .
В 2
Bb 22 по
аа 1

Примечание: один и тот же значение ключа, за передней крышкой.

 

Ссылка: Автор: onemore
          Источник: https://www.cnblogs.com/dianel/

    Оригинал 2: http://www.zlovezl.cn/articles/collections-in-python/

 



рекомендация

отwww.cnblogs.com/mushusheng/p/11550969.html