Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các kiểu dữ liệu Container (Container Datatypes) trong Python

Trong module collections có một số kiểu dữ liệu container (container datatypes), là các lựa chọn thay thế cho các container built-in (tích hợp sẵn) chung của Python như dict, list, set, v.v.

Một số container:

STTContainer & Mô tả
1namedtuple() – Tạo subclass tuple với trường tên (named fields)
2deque – Hàng đợi dùng dữ liệu kiểu list
3Counter – Subclass của dict để đếm đối tượng hash-table
4ChainMap – Tạo view đơn nhất của nhiều mapping
5OrderedDict – Subclass của dict, dữ liệu thêm theo thứ tự
6UserList – Wrapper cho list để truy cập dễ dàng hơn

Để dùng module này, nên nhập bằng:

import collections

Đối tượng Deque

Deque về cơ bản là sự khái quát hóa của stack và queue, khởi tạo từ trái sang phải. Dùng đối tượng list để tạo deque.

Một số phương thức liên quan đến Deque:

STTPhương thức & Mô tả
1append(x) – Thêm x vào phía phải deque
2appendleft(x) – Thêm x vào phía trái deque
3clear() – Xóa deque
4count(x) – Đếm số lần xuất hiện x trong deque
5index(x[, start[,stop]]) – Trả về vị trí x. Nếu start/stop cho trước, tìm trong khoảng đó
6insert(i, x) – Chèn x vào deque tại vị trí i
7pop() – Xóa và trả về phần tử từ phía phải
8popleft() – Xóa và trả về phần tử từ phía trái
9reverse() – Đảo ngược nội dung deque
10rotate(n=1) – Xoay deque n lần sang phải

Mã ví dụ Deque

import collections as col

my_deque = col.deque('124dfre')
print(my_deque)
print("Phần tử Popped: " + str(my_deque.pop()))
print("Phần tử Popped từ trái: " + str(my_deque.popleft()))
print(my_deque)

Kết quả Deque

deque(['1', '2', '4', 'd', 'f', 'r', 'e'])
Phần tử Popped: e
Phần tử Popped từ trái: 1
deque(['2', '4', 'd', 'f', 'r'])

Đối tượng Counter

Counter là subclass của dict. Dùng để đếm giá trị khóa. Counter chỉ cho phép giá trị nguyên (integer).

Một số phương thức Counter:

STTPhương thức & Mô tả
1elements() – Trả về các phần tử, lặp lại theo số lần counter giữ
2most_common([n]) – Trả về list n phần tử phổ biến nhất. Nếu n không cho, trả về tất cả
3subtract(iterable or mapping) – Trừ giá trị counter từ hai counter object, khớp khóa
4update(iterable or mapping) – Cộng giá trị mà không thay thế, khớp khóa

Mã ví dụ Counter

import collections as col

text_list = ['ABC','PQR','ABC','ABC','PQR','Mno','xyz','PQR','ABC','xyz']
my_counter = col.Counter()
for element in text_list:
    my_counter[element] += 1
print(my_counter)
print(my_counter.most_common(2))

Kết quả Counter

Counter({'ABC': 4, 'PQR': 3, 'xyz': 2, 'Mno': 1})
[('ABC', 4), ('PQR', 3)]

Đối tượng ChainMap

ChainMap dùng để gom các dictionary thành đơn vị đơn nhất.

Một số thành viên ChainMap:

STTPhương thức & Mô tả
1maps – Trả về khóa với giá trị tương ứng
2new_child(m=None) – Chèn dictionary mới tại vị trí đầu tiên của chain

Mã ví dụ ChainMap

import collections as col

con_code1 = {'India' : 'IN', 'China' : 'CN'}
con_code2 = {'France' : 'FR', 'United Kingdom' : 'GB'}
code = {'Japan' : 'JP'}

chain = col.ChainMap(con_code1, con_code2)
print("Chain ban đầu: " + str(chain.maps))
chain = chain.new_child(code)  # Chèn New Child
print("Chain cuối cùng: " + str(chain.maps))

Kết quả ChainMap

Chain ban đầu: [{'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}]
Chain cuối cùng: [{'Japan': 'JP'}, {'India': 'IN', 'China': 'CN'}, {'France': 'FR', 'United Kingdom': 'GB'}]