🎯 Mục Tiêu
- Khái niệm Dictionary là gì và cấu trúc lưu theo chuẩn
Key: Value. - Các cách khởi tạo và truy cập an toàn (ngăn ngừa sự cố sập chương trình với
KeyError). - Cách thêm, sửa nội dung, xóa bỏ các trường
itemsphổ biến. - Cách gọi các method cung cấp sẵn lấy ra toàn bộ
keys,values,itemsvà kết hợp lặp bằng vòng lặp. - Ứng dụng về Dictionary lồng nhau.
Khởi Tạo Dictionary (Creating Dicts)
Dictionary có thể hiểu như dữ liệu JSON trong Web hoặc “Bảng từ vựng” ở thực tế. Mỗi phần tử gọi là một cặp Key-Value.
Key(Khóa): Phải là kiểu Immutable (không đổi) như String, Integer hoặc Tuple. Bắt buộc phải là duy nhất (không được trùng).Value(Giá trị): Có thể chứa BẤT KỲ loại dữ liệu nào (list, int, str, dict lồng nhau,…).
# Cách 1: Tạo Dict rỗng nhanh
empty_dict = {}
# Cách 2: Dict có sẵn dữ liệu chuẩn Key-Value
person = {
"name": "An", # Dấu phẩy ngăn cách các cặp
"age": 25,
"city": "Hà Nội"
}
# Cách 3: Dùng hàm dict() để tiện khai báo hơn mà không cần viết String nhiều cho Key
# Lưu ý Key trở thành tên biến khi trong ngoặc thay cho String
person = dict(name="An", age=25, city="Hà Nội")
Truy Cập Values (Accessing Values)
Điểm lưu ý nhất là việc truy cập sai cách sẽ gây lỗi khiến app “chết ngang” (Crash). Thế nên hàm .get() được khuyến nghị dùng.
person = {"name": "An", "age": 25}
# Dùng ngoặc vuông [] - NHANH NHƯNG KHÔNG AN TOÀN
name = person["name"] # Trả về "An"
# salary = person["salary"] # ❌ Gây lỗi KeyError vì "salary" không tồn tại.
# Dùng hàm .get() - PHƯƠNG PHÁP TỐT NHẤT NGĂN LỖI
age = person.get("age") # Trả về 25
salary = person.get("salary") # Trả về None thay vì sập app.
salary_an_toan = person.get("salary", 0) # Truyền giá trị mặc định là 0 nếu không tìm thấy key.
Thêm/Sửa Items (Adding/Updating Items)
Giống như gán biến bình thường, thêm/sửa một cặp Key-Value không cần những lệnh rườm rà.
person = {"name": "An", "age": 25}
# Cách THÊM (Add) - Nếu key chưa hề tồn tại trước đó
person["city"] = "Hà Nội"
# Cách SỬA (Update) - Ghi đè vào giá trị cũ thông qua key cũ
person["age"] = 26
Xóa Items (Removing Items)
person = {"name": "An", "age": 25, "city": "HN"}
# Cách 1: Lệnh del
del person["city"]
# Cách 2: pop(key) - VỪA XÓA và VỪA TRẢ VỀ giá trị đó
age = person.pop("age") # Biến 'age' có giá trị 25
# popitem() - Chỉ xóa Item cuối cùng
# clear() - Xóa NHẴN TẤT CẢ mọi thành phần bên trong.
Dictionary Methods (keys, values, items)
Khi muốn làm việc với toàn vẹn tập Keys hoặc tập Values (phục vụ tính toán, in ấn, dò tìm…).
person = {"name": "An", "age": 25, "city": "HN"}
# Chỉ lấy toàn bộ các KHÓA
print(person.keys()) # Trả về danh sách: dict_keys(['name', 'age', 'city'])
# Chỉ lấy toàn bộ CÁC GIÁ TRỊ (bỏ qua Khóa)
print(person.values()) # Trả về: dict_values(['An', 25, 'HN'])
# Lấy CẢ HAI (Khóa và Giá Trị) theo hình thức Tuple-Pair
print(person.items()) # Trả về nhóm Tuple: dict_items([('name', 'An'), ...])
# SỬ DỤNG LOOP KẾT HỢP
for key, value in person.items():
print(f"{key}: {value}")
Nested Dictionaries (Dict Lồng Nhau)
Bạn có thể lồng Dict vào bên trong một Dict khác vô hạn lần theo nguyên tắc cây phân cấp, thường dùng để tổ chức database hoặc lưu phản hồi (Call API json).
students = {
"student1": {"name": "An", "age": 20},
"student2": {"name": "Bình", "age": 21}
}
# Truy cập lần lượt từ gốc đi đến phần tử lá
ten_an = students["student1"]["name"] # "An"
💡 Key Takeaways
- Dictionaries lưu dưới hình thức Key: Value pairs. Không tồn tại số Index.
- Values muốn gán kiểu gì cũng được, còn Keys thì phải là Unique và Immutable.
- Luôn luôn nghĩ tới
get()khi dự đoán Key có nguy cơ thiếu trong Dict để tránh Lỗi Hệ Thống ngớ ngẩn (KeyError). - Dictionaries thuộc nhóm Mutable (hỗ trợ chỉnh sửa và xóa thoải mái).
➡️ Bài Tiếp Theo Lesson 13 – Functions

