Cơ bảnKiến thức cơ bản

Dictionary trong Python: Cách dùng dict hiệu quả

8 phút đọc14 lượt xem
#python#dictionary#dict#key-value#json

Dictionary trong Python: Cách dùng dict hiệu quả

Dictionary (dict) trong Python lưu dữ liệu theo cặp key–value — tra theo key, lấy value ngay, không cần duyệt từng phần tử. Đây là kiểu dữ liệu bạn sẽ dùng liên tục khi làm việc với JSON, API, hay bất kỳ dữ liệu có cấu trúc nào.

Dictionary trong Python là gì?

Dict có một vài đặc điểm cần nhớ ngay từ đầu:

  • Key phải là immutable (string, int, tuple — không dùng list làm key được)
  • Value có thể là bất kỳ kiểu dữ liệu nào
  • Key không được trùng lặp — gán lại key cũ sẽ ghi đè
  • Từ Python 3.7+, dict 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)

Trong thực tế, get() là lựa chọn phổ biến hơn vì tránh được lỗi khi key chưa chắc tồn tại.

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ương tự list comprehension, dict comprehension giúp tạo dict gọn hơn nhiều so với vòng lặp thông thường:

# 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

Khi làm việc với API, bạn sẽ liên tục chuyển đổi qua lại giữa Python dict và JSON string. Module json có sẵn trong Python giải quyết điều này:

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ứcMô 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] = valThêm/cập nhật keyd["city"] = "HN"
d.update(dict2)Cập nhật nhiều keyd.update({"a": 1})
d.pop(key)Xóa key, trả về valued.pop("name")
del d[key]Xóa keydel d["name"]
d.clear()Xóa tất cảd.clear()
d.keys()Tất cả keysd.keys()
d.values()Tất cả valuesd.values()
d.items()Tất cả cặp (key, value)d.items()
key in dKiểm tra key tồn tại"name" in d

Bài viết liên quan

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

100 Days of Code: The Complete Python Pro Bootcamp

Học Python qua 100 dự án thực tế. Phù hợp cho người mới bắt đầu.

4.7
Xem khóa học →

Python for Data Science and Machine Learning Bootcamp

Học Data Science với Python: pandas, matplotlib, scikit-learn.

4.6
Xem khóa học →

Automate the Boring Stuff with Python

Tự động hóa công việc lặp đi lặp lại bằng Python.

4.6
Xem khóa học →

*Đây là liên kết liên kết (affiliate link). Chúng tôi có thể nhận hoa hồng nếu bạn mua khóa học qua liên kết này.