2 kiểu dữ liệu cực kỳ quan trọng khác ngoài List, đó là **Tuple** (bộ) và **Dictionary** (từ điển). Chúng sẽ giúp tổ chức dữ liệu một cách hiệu quả và an toàn hơn!
🎯 Mục Tiêu Bài Giảng
Kiến thức
Phân biệt sự khác biệt cốt lõi giữa List (thay đổi được) và Tuple (KHÔNG thay đổi được).
Hiểu khái niệm "cặp Key-Value" và cách Dictionary tổ chức dữ liệu.
Kỹ năng
Biết cách tạo và truy xuất Tuple.
Biết cách tạo, truy xuất, thêm, cập nhật và xóa dữ liệu trong Dictionary.
⏱️ Phân Bổ Thời Gian (120 phút)
Tuple giống List ở điểm nào, và tại sao nó lại được gọi là "bất biến" (immutable)!
1. Khái niệm Tuple (Bộ)
Tuple (đọc là /'tʌpəl/ hoặc /'tju:pəl/) là một cấu trúc dữ liệu gần giống hệt List.
Giống List: Có thứ tự, cho phép các phần tử trùng lặp, truy xuất bằng index.
Khác List: Tuple **KHÔNG THỂ THAY ĐỔI** (immutable) sau khi đã tạo.
Tại sao dùng Tuple?
Khi muốn dữ liệu được an toàn, không bị vô tình sửa đổi. Ví dụ: tọa độ (x, y), thông tin ngày sinh, các hằng số cài đặt...
2. Tạo và Truy xuất Tuple
Chúng ta dùng dấu ngoặc đơn `()` để tạo Tuple (thay vì `[]` như List).
Nếu muốn tạo Tuple chỉ có một phần tử, bạn **bắt buộc** phải thêm dấu phẩy (,) ở cuối.
# SAI CÁCH (Python nghĩ đây là phép toán trong ngoặc)
not_a_tuple = ("hello")
print(type(not_a_tuple)) # Kết quả:
# ĐÚNG CÁCH (Có dấu phẩy)
a_tuple = ("hello",)
print(type(a_tuple)) # Kết quả:
3. Tính "Bất Biến" (Immutable)
Đây là đặc điểm cốt lõi của Tuple. Chúng ta không thể thay đổi, thêm, hoặc xóa phần tử sau khi Tuple đã được tạo.
my_tuple = (10, 20, 30)
# Thử cập nhật giá trị (Sẽ gây lỗi)
# my_tuple[0] = 5 # Báo lỗi: TypeError: 'tuple' object does not support item assignment
# Thử thêm phần tử (Sẽ gây lỗi)
# my_tuple.append(40) # Báo lỗi: AttributeError: 'tuple' object has no attribute 'append'
# Thử xóa phần tử (Sẽ gây lỗi)
# del my_tuple[0] # Báo lỗi: TypeError: 'tuple' object doesn't support item deletion
Dictionary (Từ điển) - một cấu trúc dữ liệu cực kỳ mạnh mẽ. Thay vì dùng index (0, 1, 2...), Dictionary cho phép chúng ta dùng "nhãn" (Key) để truy cập dữ liệu!
1. Khái niệm Dictionary (Từ điển)
Đặt vấn đề: List dùng số (0, 1, 2...) để tìm đồ vật. Nếu ta muốn dùng "tên" (nhãn) để tìm thì sao? Ví dụ: tìm "điểm toán" thay vì tìm "phần tử ở index 0".
Dictionary: Lưu trữ dữ liệu theo các cặp **Key : Value** (Chìa khóa : Giá trị).
Key: Giống như cái "nhãn" hay "địa chỉ" (index) mà chúng ta tự đặt. Key phải là **duy nhất** và **không thể thay đổi** (thường là Chuỗi hoặc Số).
Value: Là giá trị (dữ liệu) ứng với cái Key đó. Value có thể là bất cứ thứ gì (Số, Chuỗi, List, thậm chí là một Dictionary khác).
2. Tạo Dictionary
Chúng ta dùng dấu ngoặc nhọn `{}` để tạo Dictionary.
# 1. Tạo Dictionary rỗng
my_dict = {}
# 2. Tạo Dictionary có giá trị
hoc_sinh = {
"ten": "Bình",
"lop": "8A",
"diem_tb": 8.5,
"mon_hoc": ["Toán", "Văn", "Anh"]
}
print(hoc_sinh)
3. Truy xuất, Thêm và Cập nhật
Chúng ta dùng cú pháp `dict[Key]` để thực hiện tất cả các thao tác này.