Posted in

Thêm phần tử vào Dictionary trong Python

Khi lập trình với Python, dictionary (từ điển) là một trong những kiểu dữ liệu quan trọng nhất. Nó lưu trữ dữ liệu theo cặp key – value, cho phép mình truy cập giá trị nhanh chóng thông qua key. Trong quá trình làm việc, chắc chắn sẽ có lúc mình cần bổ sung thêm phần tử mới vào dictionary. Đây là một thao tác cơ bản nhưng vô cùng quan trọng, vì nó liên quan đến việc quản lý dữ liệu động, mở rộng cấu trúc dữ liệu khi chương trình đang chạy.

Trong bài viết này, mình sẽ cùng bạn tìm hiểu kiến thức về cách thêm phần tử vào dictionary trong Python. Bắt đầu thôi nào…!!

1. Dictionary trong Python là gì?

Dictionary trong Python là một cấu trúc dữ liệu dùng để lưu trữ các cặp key–value.

  • Key: phải là kiểu dữ liệu bất biến (immutable), ví dụ: số, chuỗi, tuple.
  • Value: có thể là bất kỳ kiểu dữ liệu nào (số, chuỗi, list, dictionary khác…).
  • Dictionary không lưu trữ phần tử theo thứ tự cố định (trước Python 3.7). Từ phiên bản 3.7 trở đi, dictionary duy trì thứ tự các phần tử được thêm vào.

Ví dụ:

# Create a simple dictionary
student = {
    "name": "Alice",
    "age": 21,
    "major": "Computer Science"
}

Ở đây:

  • "name", "age", "major" là key.
  • "Alice", 21, "Computer Science" là value.

2. Thêm phần tử bằng cách gán trực tiếp (Assignment)

Cách đơn giản nhất để thêm phần tử mới vào dictionary là gán trực tiếp cho một key.

Cú pháp:

dictionary[key] = value

Ví dụ:

# Create an empty dictionary
user_info = {}

# Add elements by assignment
user_info["username"] = "john_doe"    # Add a string value
user_info["email"] = "john@example.com"
user_info["age"] = 30                 # Add an integer value

print(user_info)

Kết quả:

{'username': 'john_doe', 'email': 'john@example.com', 'age': 30}

Ở đây, dictionary user_info ban đầu rỗng, sau đó mình thêm dần các phần tử vào.

Lưu ý: Nếu key đã tồn tại, việc gán trực tiếp sẽ ghi đè (overwrite) giá trị cũ.

3. Thêm nhiều phần tử cùng lúc bằng update()

Phương thức update() cho phép thêm một hoặc nhiều phần tử cùng lúc. Nó nhận vào một dictionary khác hoặc một danh sách các cặp (key, value).

Ví dụ 1 – dùng dictionary:

# Existing dictionary
student = {"name": "Alice", "age": 21}

# Add multiple new elements
student.update({"major": "Math", "year": 3})

print(student)

Kết quả:

{'name': 'Alice', 'age': 21, 'major': 'Math', 'year': 3}

Ví dụ 2 – dùng list of tuples:

# Another dictionary
settings = {"theme": "dark"}

# Add multiple elements using list of tuples
settings.update([("language", "English"), ("autosave", True)])

print(settings)

Kết quả:

{'theme': 'dark', 'language': 'English', 'autosave': True}

So với gán trực tiếp, update() tiện hơn khi cần thêm nhiều phần tử cùng lúc.

4. Sử dụng setdefault() để thêm phần tử

Phương thức setdefault() vừa dùng để lấy giá trị của key, vừa có thể thêm phần tử mới nếu key chưa tồn tại.

Cú pháp:

dictionary.setdefault(key, default_value)

Ví dụ:

# Create dictionary
profile = {"name": "Bob"}

# Add a new element using setdefault
profile.setdefault("email", "bob@example.com")

# Try setdefault again with an existing key
profile.setdefault("name", "Default Name")

print(profile)

Kết quả:

{'name': 'Bob', 'email': 'bob@example.com'}

Giải thích:

  • "email" chưa tồn tại nên được thêm vào.
  • "name" đã tồn tại nên không bị thay đổi.

setdefault() hữu ích trong các tình huống mình muốn đảm bảo key tồn tại nhưng không muốn ghi đè giá trị cũ.

5. Thêm phần tử lồng nhau (Nested Dictionary)

Trong thực tế, mình thường gặp dictionary lồng nhau. Thêm phần tử vào dictionary con cũng đơn giản.

Ví dụ:

# Nested dictionary
student = {
    "name": "Charlie",
    "grades": {"math": 90, "science": 85}
}

# Add a new subject grade inside nested dictionary
student["grades"]["english"] = 88

print(student)

Kết quả:

{'name': 'Charlie', 'grades': {'math': 90, 'science': 85, 'english': 88}}

Ở đây, mình không chỉ thêm phần tử vào dictionary chính mà còn vào dictionary con "grades".

6. Thêm phần tử bằng vòng lặp

Khi có nhiều dữ liệu được sinh ra từ danh sách hoặc xử lý, mình có thể dùng vòng lặp để thêm vào dictionary.

Ví dụ:

# List of keys and values
keys = ["id", "username", "email"]
values = [101, "alice_wonder", "alice@example.com"]

# Empty dictionary
user = {}

# Add elements using loop
for i in range(len(keys)):
    user[keys[i]] = values[i]

print(user)

Kết quả:

{'id': 101, 'username': 'alice_wonder', 'email': 'alice@example.com'}

Với cách này, mình có thể xây dựng dictionary từ dữ liệu bên ngoài rất linh hoạt.

7. Một số lưu ý quan trọng

  1. Key phải duy nhất: Nếu thêm key đã tồn tại, giá trị cũ sẽ bị ghi đè.
  2. Key phải là immutable: Không thể dùng list hoặc dictionary làm key.
  3. Có thể thêm bất kỳ kiểu dữ liệu nào làm value: từ số, chuỗi, list đến object phức tạp.
  4. Dung lượng bộ nhớ: Dictionary có tốc độ truy cập nhanh nhưng tốn bộ nhớ hơn list, vì vậy cần cân nhắc khi lưu trữ dữ liệu lớn.

9. So sánh các cách thêm phần tử

Phương phápKhi nào dùng
Gán trực tiếpKhi thêm một phần tử đơn lẻ hoặc ghi đè giá trị.
update()Khi thêm nhiều phần tử cùng lúc.
setdefault()Khi muốn thêm phần tử nếu chưa tồn tại, giữ nguyên giá trị cũ nếu đã có.
Vòng lặpKhi dữ liệu đến từ list, tuple, file, hoặc nguồn dữ liệu ngoài.
Nested dictionaryKhi làm việc với cấu trúc dữ liệu phức tạp, nhiều tầng.

10. Kết luận

Qua bài viết này, mình đã đi từ khái niệm cơ bản về dictionary cho đến các phương pháp khác nhau để thêm phần tử mới trong Python. Việc nắm vững các cách thêm phần tử — từ gán trực tiếp, sử dụng update(), setdefault(), vòng lặp cho tới xử lý dictionary lồng nhau — giúp mình linh hoạt hơn rất nhiều khi làm việc với dữ liệu.

Dictionary không chỉ là một cấu trúc dữ liệu mạnh mẽ mà còn rất phổ biến trong thực tế, từ việc lưu trữ thông tin người dùng, cấu hình hệ thống cho tới quản lý dữ liệu từ API. Nếu sử dụng thành thạo, bạn sẽ tiết kiệm được nhiều thời gian và viết được những chương trình gọn gàng, dễ bảo trì hơn.

11. Tài liệu tham khảo

  1. Python Software Foundation. (2024). Python 3.12 Documentation – Built-in Types: dict. Truy xuất từ https://docs.python.org/3/library/stdtypes.html#mapping-types-dict
  2. Sweigart, A. (2019). Automate the Boring Stuff with Python. No Starch Press.
  3. Lutz, M. (2013). Learning Python (5th Edition). O’Reilly Media.

Leave a Reply

Your email address will not be published. Required fields are marked *