Monday, September 16, 2024

Defaultdict(set) trong Python

-

Defaultdict(set) là gì?

Trước tiên, hãy cùng ôn lại một chút về defaultdictset trong Python:

  • defaultdict: Là một subclass của dict cho phép bạn chỉ định một hàm tạo mặc định để cung cấp giá trị mặc định cho các key chưa tồn tại. Điều này rất hữu ích khi bạn muốn tránh lỗi KeyError khi truy xuất đến một key không có trong dictionary.
  • set: Là một kiểu dữ liệu không sắp xếp, không trùng lặp. Các phần tử trong một set là duy nhất.

Khi kết hợp defaultdict với set, ta có defaultdict(set). Điều này có nghĩa là mỗi khi bạn truy cập vào một key chưa tồn tại trong dictionary, một set rỗng sẽ tự động được tạo và gán cho key đó.

Ví dụ minh họa:

Giả sử bạn muốn tạo một dictionary để lưu trữ các từ và các từ đồng nghĩa của chúng. Với defaultdict(set), bạn có thể làm như sau:

from collections import defaultdict

synonyms = defaultdict(set)

synonyms['good'].add('great')
synonyms['good'].add('excellent')
synonyms['happy'].add('joyful')
synonyms['happy'].add('glad')

print(synonyms)

Kết quả.

defaultdict(<class 'set'>, {'good': {'great', 'excellent'}, 'happy': {'joyful', 'glad'}})

Như bạn thấy, chúng ta đã tạo một dictionary synonyms mà trong đó mỗi key là một từ và giá trị tương ứng là một set chứa các từ đồng nghĩa của nó. Khi ta thêm một từ đồng nghĩa mới, nó sẽ tự động được thêm vào set tương ứng, ngay cả khi set đó chưa tồn tại trước đó.

Một ví dụ khác:

Giả sử bạn có một danh sách các cặp (người, sở thích) và bạn muốn nhóm các người có cùng sở thích lại với nhau.

from collections import defaultdict

people_hobbies = defaultdict(set)

data = [
    ('Alice', 'reading'),
    ('Bob', 'coding'),
    ('Charlie', 'reading'),
    ('David', 'coding'),
    ('Alice', 'swimming')
]

for person, hobby in data:
    people_hobbies[hobby].add(person)

print(people_hobbies)

Kết quả.

defaultdict(<class 'set'>, {'reading': {'Alice', 'Charlie'}, 'coding': {'Bob', 'David'}, 'swimming': {'Alice'}})

Tại sao nên sử dụng defaultdict(set)?

  • Tránh lỗi KeyError: Bạn không cần phải kiểm tra trước xem một key đã tồn tại trong dictionary hay chưa.
  • Tự động tạo giá trị mặc định: Một set rỗng sẽ được tự động tạo ra khi bạn truy cập vào một key chưa tồn tại.
  • Dễ dàng thêm phần tử: Bạn có thể dễ dàng thêm các phần tử vào set tương ứng của mỗi key.
  • Phù hợp với các bài toán đếm, phân nhóm: defaultdict(set) rất hữu ích trong các bài toán đếm số lần xuất hiện của một giá trị hoặc nhóm các phần tử theo một tiêu chí nào đó.

Tổng kết.

defaultdict(set) là một công cụ rất mạnh mẽ và linh hoạt trong Python. Nó giúp bạn viết code ngắn gọn, hiệu quả và dễ đọc hơn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories