Dictionary trong Python: Hướng dẫn đầy đủ từ cơ bản đến nâng cao
Trong Python, Dictionary (dict) là một trong những cấu trúc dữ liệu quan trọng và được dùng nhiều nhất. Dictionary lưu dữ liệu theo cặp key–value, giúp tra cứu thông tin cực nhanh – tương tự như từ điển thực: tra "key" → lấy "value".
Dictionary trong Python là gì?
Dictionary là kiểu dữ liệu lưu cặp key–value với các đặc điểm:
- Key phải là immutable (string, int, tuple)
- Value có thể là bất kỳ kiểu dữ liệu nào
- Key không được trùng lặp
- Từ Python 3.7+: Dictionary giữ thứ tự chèn
# Tạo dictionary cơ bản
person = {
"name": "Nguyễn An",
"age": 22,
"city": "Hà Nội"
}
print(type(person)) # <class 'dict'>
print(len(person)) # 3 (số cặp key-value)
Truy cập giá trị trong Dictionary
person = {"name": "An", "age": 22, "city": "HCM"}
# Cách 1: Dùng key trực tiếp – lỗi nếu key không tồn tại
print(person["name"]) # "An"
# Cách 2: get() – an toàn hơn, trả về None nếu không có key
print(person.get("age")) # 22
print(person.get("phone")) # None
print(person.get("phone", "Chưa có")) # "Chưa có" (giá trị mặc định)
Thêm và cập nhật phần tử
person = {"name": "An", "age": 22}
# Cập nhật giá trị hiện có
person["age"] = 23
# Thêm key mới
person["email"] = "an@gmail.com"
# update() – cập nhật nhiều key cùng lúc
person.update({"age": 24, "city": "Đà Nẵng"})
Xóa phần tử khỏi Dictionary
person = {"name": "An", "age": 22, "city": "HCM"}
# pop(): xóa theo key, trả về giá trị đã xóa
city = person.pop("city") # city = "HCM"
# del: xóa theo key
del person["age"]
# clear(): xóa tất cả
person.clear() # → {}
Các phương thức Dictionary quan trọng
info = {"name": "An", "age": 22, "city": "HCM"}
# keys(): trả về tất cả keys
print(info.keys()) # dict_keys(['name', 'age', 'city'])
# values(): trả về tất cả values
print(info.values()) # dict_values(['An', 22, 'HCM'])
# items(): trả về cặp (key, value)
print(info.items()) # dict_items([('name', 'An'), ...])
# Kiểm tra key có tồn tại không
print("name" in info) # True
print("phone" in info) # False
Lặp qua Dictionary
person = {"name": "An", "age": 22, "city": "HCM"}
# Lặp qua cặp key-value (cách phổ biến nhất)
for key, value in person.items():
print(f"{key}: {value}")
# name: An
# age: 22
# city: HCM
Dict Comprehension
# Tạo dict từ list
names = ["An", "Bình", "Cường"]
lengths = {name: len(name) for name in names}
print(lengths) # {"An": 2, "Bình": 4, "Cường": 5}
# Với điều kiện lọc
scores = {"An": 8, "Bình": 6, "Cường": 9, "Dung": 5}
passed = {name: score for name, score in scores.items() if score >= 7}
print(passed) # {"An": 8, "Cường": 9}
Dictionary và JSON
import json
# Python dict → JSON string (để gửi lên API)
person = {"name": "An", "age": 22}
json_str = json.dumps(person)
print(json_str) # '{"name": "An", "age": 22}'
# JSON string → Python dict (khi nhận dữ liệu từ API)
json_data = '{"name": "An", "age": 22}'
person = json.loads(json_data)
print(person["name"]) # "An"
Bảng tổng hợp các phương thức Dictionary
| Phương thức | Mô tả | Ví dụ |
|---|---|---|
| d[key] | Lấy giá trị (lỗi nếu không có key) | d["name"] |
| d.get(key) | Lấy giá trị (None nếu không có) | d.get("name") |
| d[key] = val | Thêm/cập nhật key | d["city"] = "HN" |
| d.update(dict2) | Cập nhật nhiều key | d.update({"a": 1}) |
| d.pop(key) | Xóa key, trả về value | d.pop("name") |
| del d[key] | Xóa key | del d["name"] |
| d.clear() | Xóa tất cả | d.clear() |
| d.keys() | Tất cả keys | d.keys() |
| d.values() | Tất cả values | d.values() |
| d.items() | Tất cả cặp (key, value) | d.items() |
| key in d | Kiểm tra key tồn tại | "name" in d |