Giới thiệu
Bạn đã làm chủ danh sách cho các tập hợp có thứ tự và tuple cho các bản ghi cố định. Bây giờ, hãy gặp gỡ cấu trúc dữ liệu gắn kết tất cả lại với nhau: từ điển Python. Nếu danh sách giống như những kệ số, thì từ điển giống như những tủ hồ sơ có nhãn—bạn lấy giá trị không phải theo vị trí, mà theo một khóa duy nhất.
Khái niệm đơn giản này về việc ánh xạ khóa đến giá trị làm cho từ điển trở thành một trong những công cụ linh hoạt và hiệu quả nhất trong Python.
Tạo từ điển: Kỹ thuật hiện đại
Bạn biết cú pháp cổ điển {key: value}
, nhưng hãy cùng khám phá những cách mạnh mẽ hơn để xây dựng từ điển.
python
# 1. Cách cổ điển
user = {"name": "Alice", "age": 30, "role": "developer"}
# 2. Tạo từ hai danh sách sử dụng zip()
keys = ["name", "age", "role"]
values = ["Bob", 25, "designer"]
user_dict = dict(zip(keys, values)) # Tạo {'name': 'Bob', 'age': 25, 'role': 'designer'}
# 3. Sử dụng dict.fromkeys() để thiết lập giá trị mặc định
default_settings = dict.fromkeys(["theme", "language", "notifications"], "undefined")
# Tạo {'theme': 'undefined', 'language': 'undefined', 'notifications': 'undefined'}
Tại sao từ điển lại mạnh mẽ: Tốc độ truy xuất
Nhớ cuộc thảo luận của chúng ta về tính biến đổi? Đây là lý do tại sao nó quan trọng: Khóa của từ điển phải là bất biến (chuỗi, số, hoặc tuple). Điều này là vì Python sử dụng một kỹ thuật gọi là băm để tìm giá trị ngay lập tức, bất kể từ điển lớn đến đâu. Kiểm tra một khóa trong từ điển nhanh hơn rất nhiều so với việc kiểm tra một mục trong danh sách lớn.
Điều này biến từ điển trở thành nhà vô địch không thể tranh cãi cho truy xuất, ánh xạ và nhóm dữ liệu.
Nâng cao mã của bạn với các phương thức này
Phép thuật thực sự của từ điển nằm ở các phương thức của chúng, giúp bạn viết mã mạnh mẽ, không có lỗi.
python
user = {"name": "Alice", "age": 30}
# .get(): Lấy giá trị một cách an toàn mà có thể không tồn tại
email = user.get("email", "Not provided") # Trả về "Not provided" thay vì bị lỗi
print(email) # Kết quả: Not provided
# .setdefault(): Lấy giá trị, thiết lập mặc định nếu không tồn tại
theme = user.setdefault("theme", "dark") # Trả về 'dark' và thêm vào từ điển
print(theme) # Kết quả: 'dark'
print(user) # Kết quả: {'name': 'Alice', 'age': 30, 'theme': 'dark'}
# .update(): Gộp một từ điển khác vào
preferences = {"language": "Python", "os": "Linux"}
user.update(preferences) # user giờ chứa các cặp khóa-giá trị mới này
# Sử dụng Dictionary Comprehension: Xây dựng từ điển một cách động
squares = {x: x*x for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Thực hành: Một ví dụ thực tế
Hãy tưởng tượng bạn đang xử lý dữ liệu từ một API. Từ điển là lựa chọn hoàn hảo cho việc này.
python
# Một danh sách các tuple (bất biến!) đại diện cho dữ liệu API
api_data = [("user_123", "admin"), ("user_456", "viewer")]
# Chuyển đổi sang từ điển để truy xuất ngay lập tức
user_roles = dict(api_data)
# {'user_123': 'admin', 'user_456': 'viewer'}
# Kiểm tra vai trò của người dùng trong thời gian không đổi!
if user_roles.get("user_123") == "admin":
print("Access granted.") # Điều này sẽ được thực thi
Quy tắc vàng mới của bạn
Bây giờ bạn đã có bộ ba hoàn chỉnh. Lựa chọn cấu trúc dữ liệu của bạn thật đơn giản:
- Cần một chuỗi? Sử dụng Danh sách (nếu có thể thay đổi) hoặc Tuple (nếu không thể thay đổi).
- Cần ánh xạ các khóa duy nhất đến giá trị? Sử dụng Từ điển.
Bằng cách làm chủ từ điển, bạn không chỉ lưu trữ dữ liệu—bạn còn tổ chức nó để truy xuất thông minh, nhanh chóng. Đây là một nền tảng của việc viết mã Python chuyên nghiệp, hiệu quả.
Kết luận
Hãy cùng đưa những cấu trúc này vào thực tế. Chúng ta sẽ khám phá các hàm tích hợp của Python để sắp xếp, lọc và biến đổi dữ liệu với sort()
, sorted()
, và filter()
.
Aaron Rose là kỹ sư phần mềm và nhà viết công nghệ tại tech-reader.blog và là tác giả của Think Like a Genius.