Tiếp tục lộ trình học Python bài bản, sau khi đã tìm hiểu về List và Tuple, bài viết này sẽ đưa bạn đến với hai cấu trúc dữ liệu mạnh mẽ khác: Dictionary (Từ điển) và Set (Tập hợp). Việc nắm vững cách làm việc với hai kiểu dữ liệu này sẽ giúp bạn giải quyết tốt các bài toán tổ chức dữ liệu phức tạp cũng như tối ưu hóa hiệu năng xử lý.
1. Dictionary (Từ điển) – Lưu Trữ Cặp Key-Value
Dictionary trong Python là một cấu trúc dữ liệu lưu trữ dưới dạng cặp Key-Value (Khóa - Giá trị). Mối quan hệ này tương tự như một từ điển thực tế: từ cần tra cứu chính là Key, và định nghĩa của từ đó chính là Value.
Tính chất chính của Dictionary
- Key duy nhất: Các key trong một dictionary không được trùng lặp. Nếu bạn gán giá trị mới cho một key đã tồn tại, giá trị cũ sẽ bị ghi đè.
- Truy xuất nhanh chóng: Thay vì dùng chỉ số (index) dạng số như List, bạn truy xuất giá trị thông qua Key.
- Kiểu dữ liệu linh hoạt: Key phải là kiểu dữ liệu không thể thay đổi (immutable) như string, number, tuple. Value có thể là bất kỳ kiểu dữ liệu nào (string, int, list, hoặc một dictionary khác).
Khởi tạo và sử dụng Dictionary
Dưới đây là các thao tác cơ bản với Dictionary trong Python:
# Khởi tạo Dictionary bằng cặp dấu ngoặc nhọn {} hoặc hàm dict()
student = {
"name": "Nguyễn Văn A",
"age": 20,
"major": "Khoa học máy tính"
}
# Truy xuất giá trị bằng Key
print(student["name"]) # Kết quả: Nguyễn Văn A
# Sử dụng phương thức .get() (An toàn, không gây lỗi KeyError nếu key không tồn tại)
print(student.get("gpa", "Chưa cập nhật")) # Kết quả: Chưa cập nhật
# Thêm hoặc cập nhật giá trị
student["gpa"] = 3.6 # Thêm key mới
student["age"] = 21 # Cập nhật key đã có
# Xóa phần tử bằng phương thức pop() hoặc từ khóa del
removed_value = student.pop("major")
print(student)Duyệt qua các phần tử trong Dictionary
Bạn có thể lấy danh sách danh sách các key, value hoặc cả cặp key-value dễ dàng bằng các phương thức tích hợp sẵn:
scores = {"Toán": 9, "Lý": 8, "Hóa": 8.5}
# Lấy danh sách keys hoặc values
print(scores.keys()) # dict_keys(['Toán', 'Lý', 'Hóa'])
print(scores.values()) # dict_values([9, 8, 8.5])
# Duyệt qua từng cặp key-value
for subject, score in scores.items():
print(f"Môn {subject}: {score} điểm")2. Set (Tập hợp) – Lưu Trữ Không Trùng Lặp
Set là cấu trúc dữ liệu lưu trữ các phần tử không có thứ tự và không chứa các giá trị trùng lặp. Mỗi phần tử trong Set là duy nhất.
Tính chất chính của Set
- Không trùng lặp: Set tự động loại bỏ mọi phần tử bị lặp lại.
- Không có chỉ số (Unindexed): Các phần tử trong Set không có thứ tự cố định, do đó bạn không thể truy cập phần tử theo chỉ số dạng
set[0]. - Tối ưu phép toán tập hợp: Hỗ trợ cực tốt các phép toán đại số tập hợp như giao (intersection), hợp (union), hiệu (difference).
Khởi tạo và các thao tác cơ bản với Set
# Khởi tạo Set bằng cặp dấu ngoặc nhọn {} hoặc hàm set()
numbers = {1, 2, 3, 4, 2, 1}
print(numbers) # Kết quả: {1, 2, 3, 4} (Đã loại bỏ các số 1 và 2 bị trùng)
# Thêm và xóa phần tử trong Set
numbers.add(5)
numbers.remove(2) # Xóa phần tử 2 (sẽ báo lỗi nếu 2 không tồn tại)
numbers.discard(10) # Xóa phần tử 10 an toàn (không báo lỗi nếu không tìm thấy)
print(numbers)Ứng dụng thực tế: Loại bỏ dữ liệu trùng lặp trong List
Cách nhanh nhất để xóa toàn bộ các giá trị trùng lặp trong một danh sách (List) là chuyển đổi nó sang kiểu Set:
raw_data = [10, 20, 10, 30, 40, 20, 50]
unique_data = list(set(raw_data))
print(unique_data) # Kết quả: [10, 20, 30, 40, 50]Các phép toán tập hợp trên Set
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}
# Phép hợp (Union)
print(set_a | set_b) # Kết quả: {1, 2, 3, 4, 5, 6}
# Phép giao (Intersection)
print(set_a & set_b) # Kết quả: {3, 4}
# Phép hiệu (Difference)
print(set_a - set_b) # Kết quả: {1, 2}3. So Sánh Nhanh List, Tuple, Dictionary Và Set
- List: Có thứ tự, có thể thay đổi, cho phép trùng lặp. Phù hợp cho danh sách dữ liệu cần chỉnh sửa thường xuyên.
- Tuple: Có thứ tự, không thể thay đổi, cho phép trùng lặp. Dùng làm dữ liệu cố định (hằng số).
- Dictionary: Cấu trúc key-value, key không trùng lặp, có thể thay đổi. Phù hợp cho lưu trữ thông tin có cấu trúc (ví dụ: hồ sơ người dùng, thông số cấu hình).
- Set: Không có thứ tự, phần tử duy nhất không trùng lặp. Phù hợp cho việc lọc dữ liệu và thực hiện các phép toán tập hợp.
Kết luận
Dictionary và Set là hai công cụ đắc lực giúp bạn giải quyết hiệu quả các bài toán tổ chức dữ liệu và xử lý trùng lặp trong Python. Việc hiểu rõ tính chất key-value của Dictionary và đặc điểm duy nhất của Set sẽ giúp bạn viết mã nguồn ngắn gọn, tối ưu và chuyên nghiệp hơn. Ở bài tiếp theo trong chuỗi, chúng ta sẽ bước sang một khái niệm vô cùng quan trọng: Xây Dựng Hàm (Function) Và Quản Lý Phạm Vi Biến.
Nguồn tham khảo
- Kiểu dữ liệu Dict trong Python - Phần 1
- Python cho người mới bắt đầu #7: Kiểu dữ liệu tuple, set, dictionary
- Cấu trúc dữ liệu từ điển Dictionary trong Python
- Khi nào thì nên dùng list, dictionary, tuple, hoặc set trong ...
- Cấu Trúc Dữ Liệu: List, Tuple, Set, Dictionary - Viblo.asia
Nhận xét
Đăng nhận xét