Học bằng cách đọc theo thứ tự

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.

Cấu trúc của một dictionary
"brand""Toyota""model""Prius""year"2015ánh xạánh xạánh xạ

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.

Hãy quản lý thông tin người dùng bằng một dictionary.

① Tạo một dict user với 3 cặp khóa-giá trị sau:

- "name": "Minh"

- "age": 28

- "email": "minh@example.com"

② Dùng user["name"] để in tên và user["age"] để in tuổi bằng print().

Python Editor

Chạy code để xem đầu ra

Truy xuất giá trị — [] và .get()

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.

Sự khác nhau giữa [] và .get()
car["color"](vắng)[ ]KeyErrorđược némcar.get("color").get()Trả về None(không lỗi)truy cậpkhi vắngtruy cậpkhi vắng

Hãy thử dùng [] để lấy một khóa không tồn tại ra khỏi dict car và xem điều gì xảy ra.

① In car["brand"] bằng print().

② In car["color"] bằng print() và xác nhận rằng KeyError được ném ra.

Python Editor

Chạy code để xem đầu ra

.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).

Dict cài đặt người dùng config = {"theme": "dark", "lang": "vi"} đã sẵn sàng.

① Lấy theme hiện tại bằng config["theme"] và in ra.

② Dùng .get() để lấy "font_size", mặc định là 16 nếu chưa được đặt.

Python Editor

Chạy code để xem đầu ra

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àmCú phápĐiểm mấu chốt
Thêm hoặc cập nhậtd["key"] = valueCậ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úcd.update(other_dict)Ghi đè khóa trùng, thêm khóa mới
Lấy ra và xóav = d.pop("key")Xóa và lưu giá trị. Khóa vắng sẽ ném KeyError
Làm rỗngd.clear()Đối tượng dict còn lại, nội dung được dọn sạch
Xóa biếndel dXóa chính d. Tham chiếu sau đó sẽ gây lỗi
Cách d[key] = value hành xử
car(không có "color")car["color"]= "white"Được thêmcar(có "year")car["year"]= 2024Bị ghi đègánkhóa vắnggánkhóa có sẵn

Cùng một cú pháp thêm khi khóa vắngcậ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)             # {}

Chỉnh sửa một dict thông tin người dùng.

user = {"name": "Minh", "age": 28} đã sẵn sàng.

① Cập nhật "age" thành 29.

② Thêm "email": "minh@example.com" như một mục mới.

③ Dùng update() để áp dụng "country": "JP""age": 30 cùng lúc, rồi in ra user cuối cùng.

Python Editor

Chạy code để xem đầu ra

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
Nhìn nhanh 4 công cụ
car.keys()danh sách khóacar.values()danh sách giá trịcar.items()danh sách cặp"key"in carTrue /False

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.

Từ danh sách tồn kho stock = {"apple": 5, "banana": 0, "grape": 12}, hãy viết code kiểm tra xem một loại trái cây có trong kho hay không và liệt kê các khóa.

① Dùng in để kiểm tra xem "banana" có phải là khóa trong stock hay không và in kết quả.

② Với target = "lemon", in "{target} còn lại: {stock[target]}" nếu có, hoặc "Không có hàng" nếu không (mẫu if có sẵn trong chú thích).

③ Dùng stock.keys() để lấy chỉ các khóa, bọc bằng list() rồi in ra (danh sách tên trái cây).

Python Editor

Chạy code để xem đầu ra

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.

QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

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â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?