Câu 1Với d = {"a": 1, "b": 2}, cách nào không ném ra lỗi khi tra cứu một khóa không tồn tại?
Cách dùng Dictionary trong Python (dict)
Nắm cách dùng kiểu dict trong Python: khai báo cặp khóa-giá trị, truy xuất, thêm, cập nhật, xóa và duyệt từng phần tử.
Tạo một dictionary
Dictionary (dict) là một kiểu dữ liệu lưu trữ giá trị dưới dạng cặp khóa-giá trị.
Nếu list là chiếc hộp mà bạn lấy giá trị theo vị trí (0, 1, 2…), thì dict là chiếc hộp mà bạn lấy giá trị theo tên (khóa) — đó là cách hình dung đơn giản nhất.
Bao bọc bằng { } và liệt kê các cặp key: value ngăn cách bằng dấu phẩy.
Khóa là tên, giá trị là nội dung. Các khóa phải là duy nhất.
# Khai báo một dictionary
car = {
"brand": "Toyota",
"model": "Prius",
"year": 2015,
}
print(car) # {'brand': 'Toyota', 'model': 'Prius', 'year': 2015}
print(type(car)) # <class 'dict'>
# Khóa không nhất thiết phải là chuỗi (số cũng được)
score_by_id = {1: 80, 2: 95, 3: 72}
print(score_by_id[2]) # 95
Khi nào dùng list, khi nào dùng dict
Nếu thứ tự hoặc vị trí quan trọng, hãy dùng list. Nếu bạn muốn tra cứu theo tên, hãy dùng dict.
Ví dụ, 'bảng xếp hạng 3 điểm số' là list; 'điểm số theo từng người dùng' là dict.
Ngay cả với cùng một dữ liệu, cách bạn muốn truy xuất nó sẽ quyết định nên chọn loại nào.
Truy xuất giá trị — [] và .get()
Có hai cách để lấy giá trị ra khỏi dict, và điểm khác biệt chính nằm ở cách chúng hành xử khi khóa không tồn tại.
.get() cho phép bạn truyền giá trị mặc định làm đối số thứ hai — đó là điểm tiện lợi.
Bạn có thể nói 'trả về cái này nếu khóa không có' chỉ trong một dòng.
car = {"brand": "Toyota", "model": "Prius", "year": 2015}
# ① Truy cập bằng []
print(car["brand"]) # Toyota
# print(car["color"]) # KeyError: 'color'
# ② Truy cập bằng .get()
print(car.get("brand")) # Toyota
print(car.get("color")) # None
print(car.get("color", "Không rõ")) # Không rõ (đối số thứ hai được trả về)
.get() để tiếp tục chạy, [] để giữ chặt chẽ
Nếu khóa vắng nghĩa là có gì đó hỏng, [] an toàn hơn — nó phát hiện vấn đề sớm dưới dạng lỗi.
Nếu không sao cũng được (ví dụ các cài đặt tùy chọn), truyền giá trị mặc định vào .get() đọc dễ hơn và giảm bớt việc xử lý ngoại lệ (sẽ học sau).
Thêm, cập nhật, xóa
Dict, giống như list, có thể được chỉnh sửa sau khi tạo.
Cách đơn giản nhất để thêm, cập nhật và xóa là gán trực tiếp.
| Việc cần làm | Cú pháp | Điểm mấu chốt |
|---|---|---|
| Thêm hoặc cập nhật | d["key"] = value | Cập nhật nếu khóa tồn tại, thêm nếu không |
| Cập nhật nhiều cùng lúc | d.update(other_dict) | Ghi đè khóa trùng, thêm khóa mới |
| Lấy ra và xóa | v = d.pop("key") | Xóa và lưu giá trị. Khóa vắng sẽ ném KeyError |
| Làm rỗng | d.clear() | Đối tượng dict còn lại, nội dung được dọn sạch |
| Xóa biến | del d | Xóa chính d. Tham chiếu sau đó sẽ gây lỗi |
Cùng một cú pháp thêm khi khóa vắng và cập nhật khi khóa có sẵn.
Dict tự quyết định 'tạo nếu vắng, ghi đè nếu có' cho bạn.
car = {"brand": "Toyota", "model": "Prius", "year": 2015}
# Thêm (khóa mới)
car["color"] = "white"
print(car)
# {'brand': 'Toyota', 'model': 'Prius', 'year': 2015, 'color': 'white'}
# Cập nhật (khóa có sẵn)
car["year"] = 2024
print(car["year"]) # 2024
# Cập nhật nhiều cùng lúc
car.update({"country": "JP", "model": "Camry"})
print(car["model"]) # Camry (bị ghi đè)
print(car["country"]) # JP (mới được thêm)
# Lấy ra và xóa
old_year = car.pop("year")
print(old_year) # 2024
# print(car["year"]) # KeyError (đã bị xóa)
# Làm rỗng
car.clear()
print(car) # {}
Liệt kê khóa/giá trị và kiểm tra sự tồn tại
Cuối cùng: các công cụ để kiểm tra dict.
Có 4 công cụ chính — keys() / values() / items() / toán tử in.
- keys() — trả về danh sách khóa (
dict_keys(['brand', 'model', ...])) - values() — trả về danh sách giá trị
- items() — trả về danh sách cặp khóa-giá trị (thường dùng với vòng lặp
for) - "key" in dict — trả về True / False tùy theo khóa có tồn tại hay không
Cùng một dict, các lệnh gọi khác nhau tùy vào thứ bạn muốn lấy ra.
keys / values / items trả về danh sách; in trả về True / False.
car = {"brand": "Toyota", "model": "Prius", "year": 2015}
print(car.keys()) # dict_keys(['brand', 'model', 'year'])
print(car.values()) # dict_values(['Toyota', 'Prius', 2015])
print(car.items()) # dict_items([('brand', 'Toyota'), ...])
# Kiểm tra sự tồn tại của khóa (thường kết hợp với if)
print("brand" in car) # True
print("color" in car) # False
if "brand" in car:
print("Hãng: " + car["brand"])
else:
print("Không có thông tin hãng")
Kết hợp for với items() (tham khảo)
Để duyệt qua từng phần tử của dict, dạng chuẩn là for key, value in car.items():.
Chúng ta sẽ học for trong chương sau, nên chưa đào sâu ở đây — nhưng hãy nhớ điều này: items() cho phép bạn lấy khóa và giá trị ra cùng lúc.
Trong bài viết này, bạn đã học cách khai báo một dict, sự khác nhau giữa [] và .get() khi truy xuất, cách thêm, cập nhật và xóa phần tử, và cách kiểm tra sự tồn tại của khóa cũng như liệt kê nội dung.
Dict xuất hiện ở khắp nơi trong công việc thực tế — thông tin người dùng, cài đặt, tồn kho, kết quả tổng hợp. Khi bạn đã ghi nhớ hình ảnh chiếc hộp tra cứu theo khóa, bạn sẽ thấy rất thoải mái với việc xử lý dữ liệu sắp tới.
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Sau khi chạy d["a"] = 2 trên d = {"a": 1}, d là gì?
Câu 3Phương thức nào trả về danh sách khóa?