Python

Python Standard Library – collections

Xin chào, trong bài viết này chúng ta sẽ tìm hiểu về các functions của bộ thư viện collections trong Python.


collections.Counter()

Được sử dụng để đếm số lượng các đối tượng có trong tập hợp dữ liệu.

Function:

counterDict = collections.Counter([iterable-or-mapping])

Example:

>>> from collections import Counter
>>> Counter("codelungtung.com")
Counter({'u':2, 'n':2, 'g':2, 'c':1, 'o':1, 'd':1, 'e':1, 'l':1, 't':1})

collections.defaultdict()

defaultdict là một subclass của built-in dict class, hỗ trợ value ở kiểu List, Int và Set. Một ưu điểm của defaultdict so với dict là nó tự động trả về default value ([], 0 hoặc {}) khi truy cập vào một key không tồn tại.

Function:

defaultDict = collections.defaultdict(type)

Trong đó: type là kiểu dữ liệu của value, gồm list, intset.

Example:

>>> from collections import defaultdict
>>> data = [('A', 65), ('B', 66), ('C', 67), ('A', 97), ('B', 98)]
>>> d = defaultdict(list)
>>> for k, v in data:
...     d[k].append(v)
...
>>> d
defaultdict(<class 'list'>, {'A': [65, 97], 'B': [66, 98], 'C': [67]})

collections.namedtuple()

namedtuple được dùng để tạo một subclass có chức năng tương tự với tuple, trong đó các phần tử của tuple được truy cập bởi “name” thay vì chỉ số.

Function:

namedtupleClass = collections.namedtuple(classname, field_names)

Trong đó:
+ classname – tên của class sẽ được tạo;
+ field_names – có thể là một List chứa các strings hoặc một string với các fieldname phân cách bởi khoảng trắng.

Example:

>>> from collections import namedtuple
>>> Point = namedtuple("Point", ['x', 'y'])
>>> A = Point(10,20)
>>> B = Point(-10,-20)
>>> A
Point(x=10, y=20)
>>> B.x
-10
>>> B.y
-20

collections.OrderedDict()

OrderedDict lưu trữ các phần tử của nó theo thứ tự mà chúng được thêm vào, khác với Dict thông thường (ở Python 2.7.x) khi thứ tự các phần tử không được quy định trước

Function:

collections.OrderedDict([items])

Trong đó:
+ items – một List các cặp key/value.

Example:

>>> from collections import OrderedDict
>>> normalDict = dict([('A', 65), ('a', 97), ('B', 66), ('b', 98), ('C', 67), ('c', 99)])
>>> normalDict 
{'A': 65, 'a': 97, 'C':67, 'B': 66, 'c':99, 'b':98}
>>> orderedDict = OrderedDict([('A', 65), ('a', 97), ('B', 66), ('b', 98), ('C', 67), ('c', 99)])
OrderedDict([('A', 65), ('a', 97), ('B', 66), ('b', 98), ('C', 67), ('c', 99)])

collections.deque()

deque là một “double-ended queue” (hàng đợi 2 chiều) được thiết kể để hỗ trợ thao tác insert và remove phần tử từ cả 2 đầu của hàng đợi. Deque cũng được sử dụng để chia sẻ dữ liệu giữa các threads (thread-safe).

Với deque, chúng ta có thể quy định số lượng phần tử tối đa mà deque có thể chứa. Khi deque đã đầy, phần tử mới được thêm vào sẽ đẩy phần tử ở đầu bên kia của deque ra ngoài.

Function:

collections.deque([iterable[, maxlen]])

Example:

>>> from collections import deque
>>> dq = deque(range(10), maxlen=10)
>>> dq
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> dq.append(10)
>>> dq
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10)
>>> dq.appendleft(-1)
>>> dq
deque([-1, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> dq.extend([10, 11, 12])
>>> dq
deque([3, 4, 5, 6, 7, 8, 9, 10, 11, 12], maxlen=10)

Reference:
[1] collections — Container datatypes.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s