Module Collection trong Python cung cấp các loại Containers khác nhau. Chúng ta đã thảo luận qua về Containers, đó là một đối tượng (Object) được sử dụng để lưu trữ các đối tượng (Object) khác và cung cấp cách truy cập các đối tượng được chứa. Một số Containers là Tuple, List, Từ điển (Dictionary),...
Phần này, chúng ta sẽ quay lại với IDE Online quen thuộc, Collection là một module "có sẵn" nên chúng ta không cần "tạo ra" và vì vậy không cần thiết sử dụng PyCharm.
Hàm NamedTuple
Hàm Python NamedTuple() trả về một đối tượng giống như tuple với tên cho từng vị trí trong bộ dữ liệu.
"Dung nhan" cú pháp của NamedTuple:
namedtuple(typename, field_names)
typename – Tên của namedtuple.
field_names – Danh sách các thuộc tính (attributes) được lưu trong namedtuple.
Ví dụ: chúng ta sẽ tạo một danh sach tên sinh viên dạng Tuple, trong đó thuộc tính (attributes) đầu tiên đại diện cho ten, phần tử thứ hai đại diện cho tuoi và phần tử thứ ba đại diện cho nganhHoc.
from collections import namedtuple
# Khai bao namedtuple()
Sinhvien = namedtuple('Sinhvien',['ten','tuoi','nganhHoc'])
# Them thông tin
S = Sinhvien('Nguyen Van A','24','CNTT')
# Truy cap theo chi muc
print ("Tuoi cua sinh vien : ",end ="")
print (S[1])
# Truy cap theo ten
print ("Ten sinh vien : ",end ="")
print (S.ten)
Bấm Run để chạy chương trình
Hàm OrderedDict()
Python OrderedDict() tương tự như Dictionary trong đó các khóa duy trì thứ tự chèn. Sự khác biệt duy nhất giữa dict() và OrderedDict() nằm ở cách xử lý thứ tự khóa trong Python.
Đây là ví dụ một chương trình trong đó chúng ta thử với cả Dictionary và OrderedDict
from collections import OrderedDict
print("Vi du ve Dict:\n")
d = {}
d['a'] = 1
d['b'] = 2
d['c'] = 3
d['d'] = 4
d['e'] = 5
d['f'] = 6
d['g'] = 7
for key, value in d.items():
print(key, value)
print("\nVi du ve Ordered Dict:\n")
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
od['d'] = 4
od['e'] = 5
od['f'] = 6
od['g'] = 7
for key, value in od.items():
print(key, value)
Chạy chương trình
Chúng ta thấy sự tương đồng của cả hai. Chỉ cần nhận thức rằng OrderedDict sẽ luôn đảm bảo thứ tự chèn của các khóa (key)
Trước khi tiếp tục, chúng ta cần "nhìn lại" một chút. Mọi thứ cứ loạn hết cả lên, nào là List, nào là Tuple, nào là Dictionary...
Tham khảo bảng các loại dữ liệu trong Python bên dưới để chúng ta dễ hơn trong việc định hình List, Tuple và Dictionary
Ví dụ |
Data Type |
x = "Hello Dat Viet Lap Trinh" |
str |
x = 20 |
int |
x = 20.5 |
float |
x = 1j |
complex |
x = ["Tao", "Xoai", "Chuoi"] |
list |
x = ("Tao", "Xoai", "Chuoi") |
tuple |
x = range(6) |
range |
x = {"ten" : "Tran Van A", "tuoi" : 24} |
dict |
x = {"Tao", "Xoai", "Chuoi"} |
set |
x = frozenset({"Tao", "Xoai", "Chuoi"}) |
frozenset |
x = True |
bool |
x = b"Hello" |
bytes |
x = bytearray(5) |
bytearray |
x = memoryview(bytes(5)) |
memoryview |
x = None |
NoneType |
Đại khái chúng ta tạm hiểu rằng để lưu trữ, thể hiện...một tập hợp dữ liệu như các loại trái cây, các loại xe, tên sinh vien trong trường...và tùy mục đích sử dụng chúng ta có thể dùng List, Tuple hay Dict.
- List trong Python được tạo bằng cách đặt chuỗi bên trong dấu ngoặc vuông [].
- Tuple tương tự như List. Các đối tượng trong tuple được phân biệt bởi dấu phảy và được bao quanh bởi dấu ngoặc đơn ()
- Dictionary được tạo bằng cách đặt một chuỗi các phần tử trong dấu ngoặc nhọn {}, cách nhau bằng dấu phẩy (,).
Chúng ta sử dụng Dict khi cần những cặp Key-Value, ví dụ Mã số sinh viên-Tên sinh viên.
Khi sử dụng Dictionary, đôi khi, KeyError xuất hiện, nó có thể trở thành một vấn đề. Để khắc phục điều này, Python giới thiệu một từ điển khác giống như vùng chứa được gọi là Defaultdict hiện diện bên trong Module Collection.
Ví dụ này sẽ phát sinh lỗi gọi là KeyError. Lý do từ điển chỉ có 3 cặp Key-Value nhưng vì lý do nào đó chúng ta có lệnh thao tác với một key không hề có trong từ điển.
Dict = {1: 'Dat Viet', 2: 'Lap', 3: 'Trinh'}
print("Dictionary:")
print(Dict)
print(Dict[1])
print(Dict[4])
Chạy chương trình
Hàm Defaultdict()
Python Defaultdict() được định nghĩa là một đối tượng giống như Dictionary. Nó là một lớp con của lớp dict. Nó cung cấp tất cả các phương thức được cung cấp bởi dictionary nhưng lấy đối số đầu tiên làm kiểu dữ liệu mặc định.
"Dung nhan" cú pháp của Defaultdict
defaultdict(default_factory)
Trong đó:
default_factory: Hàm trả về giá trị mặc định cho từ điển. Nếu đối số này không có thì từ điển sẽ đưa ra KeyError. Ví dụ
from collections import defaultdict
def def_value():
return "Khong Co"
# Defining the dict
d = defaultdict(def_value)
d["a"] = 1
d["b"] = 2
print(d["a"])
print(d["b"])
print(d["c"])
Chạy chương trình
Không có nhận xét nào:
Đăng nhận xét