Giới thiệu: Bên cạnh List, Python cung cấp hai cấu trúc dữ liệu quan trọng khác: Tuple (bộ dữ liệu) và Dictionary (từ điển). Mỗi loại có đặc điểm và ứng dụng riêng biệt, phù hợp với các tình huống khác nhau trong lập trình.
Mục tiêu bài học:
– Hiểu khái niệm và sử dụng thành thạo Tuple
– Nắm vững cách làm việc với Dictionary
– Phân biệt được sự khác nhau giữa List, Tuple và Dictionary
– Áp dụng đúng cấu trúc dữ liệu cho từng bài toán cụ thể
– Sử dụng các phương thức và thao tác cơ bản
1. Tuple – Bộ Dữ Liệu
Khái niệm: Tuple là cấu trúc dữ liệu có thứ tự, nhưng không thể thay đổi (immutable) sau khi tạo.
Cú pháp tạo Tuple:
# Tạo tuple rỗng
tuple_rong = ()
# Tạo tuple với một phần tử (cần dấu phẩy)
tuple_mot_phan_tu = (5,)
# Tạo tuple nhiều phần tử
tuple_so = (1, 2, 3, 4, 5)
tuple_hoan_hop = ("apple", 3.14, True)Truy cập và thao tác với Tuple:
diem_so = (8.5, 7.0, 9.0, 6.5)
# Truy cập theo chỉ số
print(diem_so[0]) # 8.5
print(diem_so[-1]) # 6.5
# Cắt tuple
print(diem_so[1:3]) # (7.0, 9.0)
# Duyệt qua tuple
for diem in diem_so:
print(diem)
# Tuple không thể thay đổi
# diem_so[0] = 9.0 # Lỗi: 'tuple' object does not support item assignmentƯu điểm của Tuple:
- Hiệu năng tốt hơn List
- An toàn dữ liệu (không thể thay đổi)
- Có thể dùng làm key trong Dictionary
2. Dictionary – Từ Điển
Khái niệm: Dictionary lưu trữ dữ liệu dưới dạng cặp key:value, không có thứ tự (trước Python 3.7) hoặc có thứ tự (từ Python 3.7+).
Cú pháp tạo Dictionary:
# Tạo dictionary rỗng
dict_rong = {}
# Tạo dictionary với các cặp key:value
sinh_vien = {
"ten": "Nguyễn Văn A",
"tuoi": 20,
"diem": 8.5,
"lop": "CTK44"
}Truy cập và thao tác với Dictionary:
# Truy cập giá trị
print(sinh_vien["ten"]) # "Nguyễn Văn A"
print(sinh_vien.get("tuoi")) # 20
# Thêm hoặc cập nhật phần tử
sinh_vien["email"] = "a@example.com" # Thêm mới
sinh_vien["tuoi"] = 21 # Cập nhật
# Xóa phần tử
del sinh_vien["lop"] # Xóa key "lop"
email = sinh_vien.pop("email") # Xóa và trả về giá trị
# Duyệt qua dictionary
for key in sinh_vien: # Duyệt keys
print(f"{key}: {sinh_vien[key]}")
for key, value in sinh_vien.items(): # Duyệt cả key và value
print(f"{key}: {value}")Các phương thức quan trọng của Dictionary:
mon_hoc = {"toan": 8, "van": 7, "anh": 9}
# Lấy danh sách keys, values
keys = mon_hoc.keys() # dict_keys(['toan', 'van', 'anh'])
values = mon_hoc.values() # dict_values([8, 7, 9])
# Kiểm tra key tồn tại
if "toan" in mon_hoc:
print("Có môn toán")
# Xóa toàn bộ
mon_hoc.clear()3. So Sánh List, Tuple Và Dictionary
| Đặc điểm | List | Tuple | Dictionary |
|---|---|---|---|
| Khả năng thay đổi | Có (mutable) | Không (immutable) | Có (mutable) |
| Thứ tự | Có | Có | Có (từ Python 3.7+) |
| Cú pháp | [1, 2, 3] | (1, 2, 3) | {"a": 1, "b": 2} |
| Truy cập | Chỉ số | Chỉ số | Key |
| Ứng dụng | Dữ liệu động | Dữ liệu cố định | Dữ liệu có cấu trúc |
4. Ứng Dụng Thực Tế
Sử dụng Tuple:
# Tọa độ điểm
diem_a = (10, 20)
diem_b = (30, 40)
# Thông tin cố định
thong_tin = ("Python", "3.10", 2021)
# Trả về nhiều giá trị từ hàm
def tinh_toan(a, b):
return a + b, a - b, a * b
ket_qua = tinh_toan(10, 5) # (15, 5, 50)Sử dụng Dictionary:
# Quản lý thông tin sinh viên
danh_sach_sv = {
"SV001": {"ten": "Alice", "diem": 8.5},
"SV002": {"ten": "Bob", "diem": 7.8},
"SV003": {"ten": "Charlie", "diem": 9.2}
}
# Tra cứu nhanh
if "SV001" in danh_sach_sv:
print(danh_sach_sv["SV001"]["ten"])
# Đếm tần suất
chuoi = "hello world"
tan_suat = {}
for char in chuoi:
tan_suat[char] = tan_suat.get(char, 0) + 1Bài Tập Thực Hành (Tự Giải)
Bài 1: Tạo tuple chứa thông tin cá nhân và in ra
Bài 2: Viết hàm trả về cả tổng và tích của hai số sử dụng tuple
Bài 3: Tạo dictionary quản lý sản phẩm (mã, tên, giá)
Bài 4: Đếm số lần xuất hiện của các từ trong một câu
Bài 5: Tìm sinh viên có điểm cao nhất từ dictionary
Bài 6: Kết hợp list và tuple – tạo list các tuple (tên, điểm)
Bài 7: Sắp xếp dictionary theo giá trị
Bài 8: Tạo dictionary từ hai list (keys và values)
Bài 9: Lọc các phần tử có value lớn hơn ngưỡng cho trước
Bài 10: Đảo ngược key và value trong dictionary
Lưu Ý Quan Trọng
- Chọn đúng cấu trúc: Dùng List cho dữ liệu thay đổi, Tuple cho dữ liệu cố định, Dictionary cho dữ liệu có cấu trúc
- Tuple hiệu quả hơn List về mặt hiệu năng và bộ nhớ
- Dictionary keys phải là immutable (số, chuỗi, tuple)
- Sử dụng get() để tránh lỗi khi truy cập key không tồn tại
Tóm Tắt
- Tuple: Bộ dữ liệu không thay đổi, hiệu năng cao
- Dictionary: Cặp key-value, truy cập nhanh theo key
- List: Danh sách có thứ tự, có thể thay đổi
- Ứng dụng: Mỗi cấu trúc phù hợp với các bài toán khác nhau
