Home  >  Article  >  Backend Development  >  A brief introduction to the collection module in python (with examples)

A brief introduction to the collection module in python (with examples)

不言
不言Original
2018-09-25 16:52:513110browse

This article brings you a brief introduction to the collection module in Python (with examples). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

collection module:

Based on the built-in data types (dict, list, set, tuple), the collections module also provides several additional data types: Counter, deque, defaultdict, namedtuple and OrderedDict etc.

1:namedtuple

Generate a tuple that can use the name to access the element content
For example: represents a coordinate

from collections import namedtuple
point = namedtuple('point',['x','y'])
p=point(1,2)
print(p.x)
print(p.y)
>>1
>>2

2:deque Double-ended queue:

Double-ended queue can quickly add and push objects from the other side.
When using list to store data, accessing elements by index is very fast, but inserting and deleting elements is very slow, because list is linear storage, and when the amount of data is large, insertion and deletion efficiency is very low

deque is a two-way list for efficient implementation of insertion and deletion operations, suitable for queues and stacks

from collections import deque
q=deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print(q)
>>deque(['y', 'a', 'b', 'c', 'x'])

3: Counter counter

Counter, mainly used for counting
The purpose is for tracking The number of times a value comes out. It is an unordered container type, stored in the form of key-value pairs in a dictionary, where the element is used as the key, and its count is used as the value
The count value can be any interger (including 0 and negative numbers) ,

Create:

from collections import Counter
#创建一个空的类
c=Counter()
#从一个可迭代对象中创建
c=Counter('gallahad')
#从一个字典对象创建
c=Counter({'a':2,'b':4})
#从一组键值对创建
c=Counter(a=2,b=4)

Count value accesses with missing keys
When the accessed key does not exist, return 0 instead of KeyError; otherwise return its count

Count value access

c=Counter('gallahad')
print(c['a'])
print(c['z'])
>>3
>>0

Counter update (update and subtract)
You can use an iterable object or another Counter object to update the key-value pair

update increases

c=Counter('gallahad')
c.update('chengzheng')
print(c['e'])
>>2
d=Counter('holloword')
c.update(d)
print(c['l'])
>>4

subtract decreases

c=Counter('gallahad')
c.subtract('g')
print(c['g'])
>>0
d=Counter('all')
c.subtract(d)
print(c['l'])
>>0

Modification and deletion of keys
When the count value is 0, it does not mean that the element is deleted. To delete elements you should use del

c=Counter('gallahad')
print(c)
c['a']=0
print(c)
del c['l']
print(c)
>>Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1})
>>Counter({'l': 2, 'g': 1, 'h': 1, 'd': 1, 'a': 0})
>>Counter({'g': 1, 'h': 1, 'd': 1, 'a': 0})

elements():
Returns an iterator. The number of times an element is repeated is how many times the element is contained in the iterator. The elements are arranged in no definite order, and elements with a number less than 1 are not included.

c =Counter(a=4,b=2,c=0,d=-2)
a =list(c.elements())
print(a)
>>['a', 'a', 'a', 'a', 'b', 'b']

most_common():
Returns a top (n) list. If n is not specified, all elements are returned. When multiple elements have the same count value, the arrangement is unordered

c =Counter('xsgffikgkhgdyrduykkf')
a =c.most_common(3)
print(a)

Other operations:

sum(c.values())  # 所有计数的总数
c.clear()  # 重置Counter对象,注意不是删除
list(c)  # 将c中的键转为列表
set(c)  # 将c中的键转为set
dict(c)  # 将c中的键值对转为字典
c.items()  # 转为(elem, cnt)格式的列表
Counter(dict(list_of_pairs))  # 从(elem, cnt)格式的列表转换为Counter类对象
c.most_common()[:-n:-1]  # 取出计数最少的n个元素
c += Counter()  # 移除0和负值

4:OrderdDict is ordered Dictionary

Using a dictionary (dict), the keys are unordered. When iterating the dictionary, we cannot determine the order of the keys.
If you want the keys to be in order, you can use OrderdDict

from collections import OrderedDict

d=dict([('a',1),('b',2),('c',3)])
print(d)
od=OrderedDict([('a',1),('b',2),('c',3)])
print(od)
>>{'c': 3, 'b': 2, 'a': 1}
>>OrderedDict([('a', 1), ('b', 2), ('c', 3)])


Note: OrderdDict is sorted according to the order of insertion, not according to the key Sorted by itself.

od=OrderedDict([('a',1),('c',3),('b',2)])
print(od)
>>OrderedDict([('a', 1), ('c', 3), ('b', 2)])

5:defaultdict: dictionary with default values

Example:
has the following value set [11,22,33,44,55,66,77, 88,99,90...], save all values ​​greater than 66 to the first key of the dictionary, and save values ​​less than 66 to the value of the second key.

That is: {'k1': greater than 66, 'k2': less than 66}

from collections import defaultdict

values = [11, 22, 33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)
for value in  values:
    if value>66:
        my_dict['k1'].append(value)
    else:
        my_dict['k2'].append(value)
print(my_dict)
>>defaultdict(<class &#39;list&#39;>, {&#39;k2&#39;: [11, 22, 33, 44, 55, 66], &#39;k1&#39;: [77, 88, 99, 90]})

The above is the detailed content of A brief introduction to the collection module in python (with examples). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn