Tạo dict với giá trị mặc định python

Bài đăng này là về ngôn ngữ lập trình Python. Bài đăng này nói về Bộ sưu tập Python và bạn cần có hiểu biết tối thiểu về python để hiểu điều tương tự. Nếu bạn chưa quen với python, tôi thực sự khuyên bạn nên đọc các bài đăng khác của tôi, đặc biệt là Các lớp & đối tượng Python hướng đối tượng

Bộ sưu tập Python - Chúng là gì?

Bộ sưu tập Python là các kiểu dữ liệu vùng chứa chuyên biệt cung cấp các lựa chọn thay thế cho các vùng chứa tích hợp sẵn cho mục đích chung của Python, dict, list, settuple

Các lựa chọn thay thế này không phải là sự thay thế của các loại tích hợp sẵn, nhưng cung cấp các cơ chế bổ sung không chỉ xử lý một số tình huống rõ ràng mà còn có thể giúp bạn viết ít dòng mã hơn

Tóm tắt - Python Dict

Python 'dict’ là một cấu trúc dữ liệu/bộ chứa kết hợp với (các) cặp Giá trị khóa

Nếu bạn đến từ một ngôn ngữ khác như C++ hoặc Java, bạn có thể liên hệ từ điển python với bản đồ

Vậy chính xác thì DefaultDict là gì?

defaultdict là một dict cho mọi mục đích thực tế. Bạn không cần học cú pháp mới hoặc hiểu bất cứ điều gì đặc biệt để bắt đầu sử dụng dict

defaultdictdict với Giá trị mặc định mà bạn sẽ không bao giờ nhận được một

a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""
1

Để hiểu đúng về điều này, hãy xem một ví dụ đơn giản về dict

Tạo từ điển và truy cập khóa không có trong từ điển

Khi chúng tôi chạy mã này, chúng tôi sẽ gặp lỗi sau

KeyError: 'key - 1'

Vì khóa

a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""
3 không có trong từ điển
a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""
4 và lỗi này là hiển nhiên và hợp lý. Tuy nhiên, chúng tôi không muốn mã của mình bị lỗi, vì vậy chúng tôi sẽ phải xử lý lỗi này bằng một trong các cách sau

Xử lý `Key Error` bằng từ điển

Với defaultdict, bạn không cần phải lo lắng về việc xử lý tình huống lỗi này vì điều kiện này sẽ không bao giờ xảy ra

defaultdict làm một số việc

  1. Khi nó được truy cập, nếu
    a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""
    7 không có trong từ điển, nó sẽ tạo khóa để không có cơ hội của
    a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""
    8
  2. Trong khi tạo defaultdict, bạn cần cung cấp một giá trị mặc định sẽ được gán cho khóa được tạo tự động (bước — 1 ở trên). Tuy nhiên, khóa phải được cung cấp dưới dạng có thể gọi được (hàm trả về giá trị) chứ không phải dưới dạng giá trị thô

Đây là cách chúng ta có thể sử dụng defaultdict thay vì dict cho ví dụ trên

Ví dụ đơn giản về defaultdict

Đây có phải là sự khác biệt duy nhất giữa dict và defaultdict không?

Câu hỏi hay…

Câu trả lời ngắn gọn là có"

câu trả lời dài là Có, nhưng chúng tôi có thể sử dụng có thể gọi được (hàm mà chúng tôi cung cấp để tạo dict2) bằng cách sử dụng nhiều loại tích hợp sẵn trong đó dict2 hoạt động tốt hơn từ điển đơn giản đó

Ví dụ, đây là giá trị mặc định khi chúng ta tạo defaultdict với dict5

a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""

Điều đó có nghĩa là đối với bất kỳ khóa nào có giá trị, chúng tôi sẽ tự động nhận các giá trị mặc định

Chúng ta cũng có thể sử dụng defaultdict với dict7 hoặc với chính dict khác. Hãy xem cách sử dụng nó

Sử dụng defaultdict với danh sách

Khi chúng tôi tạo defaultdict với list0, chúng tôi có thể sử dụng một cách mù quáng các chức năng danh sách như list1 trên bất kỳ

a_dct = defaultdict(int)   # The Default Value is "0"a_dct = defaultdict(float)   # The Default Value is "0.0"a_dct = defaultdict(str)   # The Default Value is ""
7 nào cho dù nó có tồn tại hay không. Đây là một ví dụ về cùng

Defaultdict với danh sách

Sử dụng defaultdict với tuple

Giống như list0, chúng ta có thể sử dụng list4 làm giá trị mặc định. Vì các bộ dữ liệu là bất biến, nên chúng ta không thể sử dụng list1 trong đó như đang thực hiện với list0, tuy nhiên, chúng ta có thể thay thế bộ dữ liệu hoàn chỉnh bằng một khóa

Đây là một ví dụ đơn giản về cùng một

defaultdict với tuple

Sử dụng defaultdict với dict

Thoạt nhìn có vẻ lạ, nhưng chúng ta cũng có thể tạo một defaultdict với dict. Heer là một ví dụ đơn giản của cùng một

Mặc định với dict

Và tin tôi đi, defaultdict với dict đang được sử dụng rộng rãi

Có bất cứ điều gì tôi nên cực kỳ cẩn thận?

Có, ngay cả khi bạn tạo một defaultdict với set2, v.v., bạn có thể ghi đè lên và gán nó cho một thứ hoàn toàn khác. Nếu điều này xảy ra, thì hầu hết mã của bạn sẽ bị lỗi

Đây là một ví dụ đơn giản về cùng một

KHÔNG nên làm gì với defaultdict

Ngay cả khi bạn quyết định sử dụng một giá trị mặc định cụ thể cho defaultdict, bạn có thể thay thế set4 hoặc set5 bất kỳ lúc nào và bạn KHÔNG bao giờ được làm điều đó. Không có gì sai về mặt cú pháp, nhưng đây không phải là lý do để sử dụng defaultdict và bạn phải sử dụng các cấu trúc khác để viết mã của mình

Đó là tất cả cho bài đăng này, Hy vọng tôi có thể giải thích defaultdict một cách dễ dàng và trực quan

Cảm ơn vì đã đọc…

Daksh

Liên kết GitHub cho mã hiện có @ https. //github. com/CodesBay/Modern-Python-Programming/tree/master/Python%20DefaultDict

Bạn có thể đặt giá trị mặc định cho từ điển Python không?

Phương thức setdefault() của Từ điển Python . The dict. phương thức setdefault() trả về giá trị của khóa được chỉ định trong từ điển . Nếu không tìm thấy khóa, thì nó sẽ thêm khóa với giá trị mặc định đã chỉ định. Nếu tham số defaultvalue không được chỉ định, thì nó được đặt Không có.

Một dict mặc định trong Python là gì?

Một defaultdict hoạt động chính xác như một dict bình thường, nhưng nó được khởi tạo bằng một hàm (“nhà máy mặc định”) không nhận đối số và cung cấp giá trị mặc định cho một khóa không tồn tại. Một defaultdict sẽ không bao giờ tăng KeyError. Bất kỳ khóa nào không tồn tại đều nhận giá trị được trả về bởi nhà máy mặc định

Defaultdict có nhanh hơn dict không?

get và thử nghiệm cho thấy rằng defaultdict nhanh hơn hai lần so với dict. lấy phương thức