Từ điển Python: Hướng dẫn toàn diện từ cơ bản đến nâng cao

1. Mảng liên kết (dictionary) là gì trong Python?

Python’s “associative array” is a data structure that manages data using key‑value pairs.
Thông thường, cái được gọi là “mảng liên kết” trong Python được cung cấp dưới dạng kiểu dict.
Ví dụ, bằng cách sử dụng tên làm khóa và lưu tuổi hoặc nghề nghiệp làm giá trị, việc tra cứu và quản lý dữ liệu trở nên hiệu quả.
Ở đây, “khóa” là một định danh duy nhất dùng để chỉ định dữ liệu, và mỗi khóa phải là duy nhất.

Sự khác biệt giữa kiểu dictionary và các cấu trúc dữ liệu khác

Đặc trưng của kiểu dictionary là khả năng tra cứu nhanh bằng các khóa.
So với các kiểu dữ liệu tuần tự như list hay tuple trong Python, bạn không cần phải tìm kiếm các phần tử một cách tuần tự; bạn có thể truy cập trực tiếp bằng khóa, điều này cải thiện đáng kể tốc độ tra cứu.
Đặc biệt khi xử lý lượng dữ liệu lớn hoặc trong các trường hợp tra cứu thường xuyên, kiểu dictionary rất hữu ích.

# Example of a dictionary
person = {
    "name": "Tanaka",
    "age": 30,
    "occupation": "Engineer"
}
print(person["name"])  # Output: Tanaka

2. Cách tạo Dictionary trong Python

Trong Python, bạn có thể tạo dictionary theo nhiều cách.
Bạn có thể sử dụng ký hiệu literal, hàm dict(), hàm zip(), v.v., tùy chọn phương pháp phù hợp với tình huống.

Phương pháp dùng Literal

Ký hiệu literal sử dụng dấu ngoặc nhọn {} để tạo một dictionary, và đây là phương pháp phổ biến và đơn giản nhất.
Sử dụng literal cho phép bạn định nghĩa các khóa và giá trị trong một dòng duy nhất, giúp tạo dictionary một cách trực quan.

# Literal notation
fruit_prices = {
    "apple": 100,
    "banana": 150,
    "orange": 200
}

Phương pháp tạo bằng hàm dict()

Hàm dict() hữu ích khi tạo một dictionary từ danh sách các tuple, v.v.
Phương pháp này đặc biệt tiện lợi khi dữ liệu thay đổi một cách động.

# dict function
fruit_prices = dict([("apple", 100), ("banana", 150), ("orange", 200)])

Phương pháp tạo bằng hàm zip()

Khi tạo một dictionary bằng cách ghép các danh sách khác nhau làm khóa và giá trị, bạn có thể thực hiện ngắn gọn bằng hàm zip().
Điều này cho phép bạn tạo dictionary một cách hiệu quả từ các danh sách tương ứng.

# zip function
keys = ["apple", "banana", "orange"]
values = [100, 150, 200]
fruit_prices = dict(zip(keys, values))
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Các thao tác cơ bản với Dictionary

Dictionary trong Python là cấu trúc dữ liệu có thể thay đổi, cho phép thêm, cập nhật và xóa dữ liệu một cách linh hoạt.
Chúng cũng có tốc độ tra cứu nhanh hơn so với các cấu trúc dữ liệu khác.

Thêm và Cập nhật phần tử

Để thêm hoặc cập nhật một phần tử trong dictionary, bạn chỉ cần gán một giá trị cho một khóa xác định.
Gán giá trị cho một khóa đã tồn tại sẽ cập nhật nó, trong khi chỉ định một khóa mới sẽ thêm một mục mới.

fruit_prices = {"apple": 100, "banana": 150}
# Add a new element
fruit_prices["orange"] = 200
# Update an existing element
fruit_prices["apple"] = 120

Xóa phần tử

Khi xóa một phần tử bằng một khóa cụ thể, bạn có thể sử dụng câu lệnh del hoặc phương thức pop().
Phương thức pop() trả về giá trị đã bị xóa, hữu ích khi bạn cần giữ lại dữ liệu đã bị loại bỏ.

# Deletion using the del statement
del fruit_prices["banana"]
# Deletion using the pop method (returns the deleted value)
removed_price = fruit_prices.pop("orange")

4. Các thao tác nâng cao

Sử dụng dictionary một cách nâng cao bao gồm việc hợp nhất với các dictionary khác và đếm tần suất. Điều này cho phép thao tác dữ liệu phức tạp hơn.

Hợp nhất Dictionary

Khi hợp nhất nhiều dictionary thành một, phương thức update() rất hữu ích. Nếu có các khóa trùng lặp, chúng sẽ bị ghi đè, cho phép bạn hợp nhất hoặc cập nhật dữ liệu trong một bước duy nhất.

dict1 = {"apple": 100, "banana": 150}
dict2 = {"banana": 200, "grape": 300}
dict1.update(dict2)
# Output: {'apple': 100, 'banana': 200, 'grape': 300}

Áp dụng đếm tần suất

Đếm tần suất rất hữu ích, ví dụ, khi đếm số lần mỗi ký tự xuất hiện trong một chuỗi. Sử dụng kiểu từ điển giúp việc tổng hợp và phân tích dữ liệu hiệu quả.

text = "apple"
frequency = {}
for char in text:
    if char in frequency:
        frequency[char] += 1
    else:
        frequency[char] = 1
# Output: {'a': 1, 'p': 2, 'l': 1, 'e': 1}

5. Lặp qua một Từ điển

Lặp là cách lý tưởng để xử lý tất cả các phần tử của một từ điển cùng một lúc. Điều này cho phép bạn thao tác các khóa và giá trị riêng lẻ hoặc lấy danh sách dữ liệu.

Lấy Khóa và Giá trị bằng Vòng lặp

Để xử lý các khóa, giá trị, hoặc sự kết hợp của chúng trong một từ điển, bạn có thể sử dụng các phương thức keys(), values(), và items().

fruit_prices = {"apple": 100, "banana": 150, "orange": 200}
# Keys only
for key in fruit_prices.keys():
    print(key)
# Values only
for value in fruit_prices.values():
    print(value)
# Key-value pairs
for key, value in fruit_prices.items():
    print(f"The price of {key} is {value} yen")

6. Tóm tắt về Từ điển Python

Các từ điển Python (mảng kết hợp) quản lý dữ liệu dưới dạng cặp khóa‑giá trị, cải thiện đáng kể hiệu suất tra cứu và các thao tác. So với danh sách và tuple, chúng cung cấp tốc độ tra cứu nhanh hơn, khiến chúng trở nên ưu việt khi xử lý lượng dữ liệu lớn. Chúng cũng rất phù hợp cho việc tổng hợp và phân tích dữ liệu, và để kết hợp với các cấu trúc dữ liệu khác, làm cho chúng trở nên không thể thiếu cho việc thao tác dữ liệu cơ bản trong Python. Nắm vững các thao tác với từ điển giúp bạn thực hiện các quy trình xử lý dữ liệu nâng cao hơn.