Từ điển Python: Bản đồ cấu trúc và hàm băm

Làm chủ từ điển Python. Tìm hiểu cách lưu trữ, tìm nạp và xử lý dữ liệu cặp khóa-giá trị. Hiểu hiệu suất và các phương pháp hay nhất để ánh xạ.

Thử trong Trình chỉnh sửa

Tổng quan

Từ điển được cho là cấu trúc dữ liệu quan trọng và được tối ưu hóa nhất trong Python. Từ điển là một tập hợp các giá trị dữ liệu có thể thay đổi được lưu trữ theo cặp `key:value`. Nếu bạn tưởng tượng một từ điển thực tế, "khóa" là từ bạn đang tra cứu và "giá trị" là định nghĩa. Cấu trúc ghép nối này giúp việc truy xuất, cập nhật và quản lý dữ liệu quan hệ trở nên vô cùng hiệu quả.

Dưới lớp vỏ bọc, từ điển Python được triển khai dưới dạng Bảng băm (hoặc Bản đồ băm) được tối ưu hóa cao. Điều này ngụ ý rằng việc truy xuất một giá trị bằng khóa của nó là một hoạt động liên tục theo thời gian `O(1)`. Cho dù từ điển của bạn chứa mười mục hay mười triệu mục, Python có thể ngay lập tức chuyển trực tiếp đến địa chỉ bộ nhớ của giá trị mà không cần quét qua toàn bộ bộ sưu tập.

Để xác định một từ điển, bạn sử dụng dấu ngoặc nhọn `{}` với các khóa và giá trị được phân tách bằng dấu hai chấm `:`. Khóa phải là loại không thể thay đổi (như chuỗi, số nguyên hoặc bộ dữ liệu), nghĩa là bạn không thể sử dụng danh sách làm khóa từ điển. Tuy nhiên, các giá trị có thể hoàn toàn là bất kỳ thứ gì—bao gồm danh sách, đối tượng hoặc thậm chí là các từ điển được lồng sâu, khiến chúng trở nên hoàn hảo để biểu diễn các cấu trúc dữ liệu giống JSON.

Việc truy cập các giá trị được thực hiện bằng cách sử dụng ký hiệu ngoặc (ví dụ: `user["name"]`). Tuy nhiên, nếu khóa không tồn tại, phương pháp này sẽ đưa ra `KeyError`, ngay lập tức tạm dừng việc thực thi chương trình. Để viết mã an toàn hơn, các chuyên gia sử dụng phương thức `.get()` (ví dụ: `user.get("name")`), phương thức này trả về `None` hoặc một giá trị mặc định tùy chỉnh nếu thiếu khóa, ngăn ngừa các sự cố không cần thiết.

Trong lịch sử, từ điển Python hoàn toàn không có thứ tự. Tuy nhiên, kể từPython 3.7, từ điển chính thức được đảm bảo duy trì thứ tự chèn. Điều này có nghĩa là khi bạn lặp lại một từ điển bằng các phương thức như `.keys()`, `.values()` hoặc `.items()`, các mục sẽ được trả về theo đúng trình tự mà chúng được thêm vào từ điển ban đầu, kết hợp tốc độ của bản đồ băm với khả năng dự đoán của danh sách.

Đầu ra mã & thực thi

Tạo hồ sơ cấu hình người dùng bằng cách sử dụng nhiều cặp khóa-giá trị lồng nhau.

user = {
    "username": "coder123",
    "role": "admin",
    "active": True
}

user["last_login"] = "2026-04-10" # Adding a key
print(f"Username is {user['username']}")

# Iterating over key-value pairs
for key, value in user.items():
    print(f"{key}: {value}")
Đầu ra thiết bị đầu cuối
Username is coder123
username: coder123
role: admin
active: True
last_login: 2026-04-10

Triển khai từng bước

  • Xử lý phản hồi JSON từ API REST
  • Ánh xạ các ID duy nhất tới các đối tượng dữ liệu lớn
  • Lưu trữ thông số cấu hình ứng dụng

Câu hỏi thường gặp

Điều gì xảy ra nếu tôi cố truy cập vào một khóa không tồn tại?

Việc sử dụng ký hiệu ngoặc (người dùng["name"]) sẽ gây ra KeyError. Thay vào đó, hãy sử dụng user.get("name") để trả về None mà không cần ném.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.