Hướng dẫn python defaultdict(lambda) - python defaultdict (lambda)

mặc định

"Từ điển tiêu chuẩn bao gồm phương thức setdefault [] để truy xuất giá trị và thiết lập mặc định nếu giá trị không tồn tại. Ngược lại, hãy defaultdictđể người gọi chỉ định mặc định [giá trị được trả về] ở phía trước khi container được khởi tạo."defaultdictđể người gọi chỉ định mặc định [giá trị được trả về] ở phía trước khi container được khởi tạo."

như được định nghĩa bởi Doug Hellmann trong Thư viện tiêu chuẩn Python theo ví dụDoug Hellmann trong Thư viện tiêu chuẩn Python theo ví dụ

Cách sử dụng defaultdict

Nhập defaultdict

>>> from collections import defaultdict

Khởi tạo defaultdict

Khởi tạo nó bằng cách vượt qua

có thể gọi là đối số đầu tiên của nó [bắt buộc] là đối số đầu tiên của nó [bắt buộc]

>>> d_int = defaultdict[int]
>>> d_list = defaultdict[list]
>>> def foo[]:
...     return 'default value'
... 
>>> d_foo = defaultdict[foo]
>>> d_int
defaultdict[, {}]
>>> d_list
defaultdict[, {}]
>>> d_foo
defaultdict[, {}]

** kwargs là đối số thứ hai của nó [tùy chọn] là đối số thứ hai của nó [tùy chọn]

>>> d_int = defaultdict[int, a=10, b=12, c=13]
>>> d_int
defaultdict[, {'a': 10, 'c': 13, 'b': 12}]

hoặc là

>>> kwargs = {'a':10,'b':12,'c':13}
>>> d_int = defaultdict[int, **kwargs]
>>> d_int
defaultdict[, {'a': 10, 'c': 13, 'b': 12}]

Nó làm việc như thế nào

Là một lớp con của từ điển chuẩn, nó có thể thực hiện tất cả các chức năng tương tự.

Nhưng trong trường hợp truyền một khóa không xác định, nó sẽ trả về giá trị mặc định thay vì lỗi. Ví dụ:Ví dụ:

>>> d_int['a']
10
>>> d_int['d']
0
>>> d_int
defaultdict[, {'a': 10, 'c': 13, 'b': 12, 'd': 0}]

Trong trường hợp bạn muốn thay đổi giá trị mặc định, hãy ghi đè default_factory:

>>> d_int.default_factory = lambda: 1
>>> d_int['e']
1
>>> d_int
defaultdict[, {'a': 10, 'c': 13, 'b': 12, 'e': 1, 'd': 0}]

hoặc là

>>> def foo[]:
...     return 2
>>> d_int.default_factory = foo
>>> d_int['f']
2
>>> d_int
defaultdict[, {'a': 10, 'c': 13, 'b': 12, 'e': 1, 'd': 0, 'f': 2}]

Nó làm việc như thế nào

Là một lớp con của từ điển chuẩn, nó có thể thực hiện tất cả các chức năng tương tự.

Nhưng trong trường hợp truyền một khóa không xác định, nó sẽ trả về giá trị mặc định thay vì lỗi. Ví dụ:

Trong trường hợp bạn muốn thay đổi giá trị mặc định, hãy ghi đè default_factory:

>>> s = 'mississippi'
>>> d = defaultdict[int]
>>> d.default_factory

>>> for k in s:
...     d[k] += 1
>>> d.items[]
[['i', 4], ['p', 2], ['s', 4], ['m', 1]]
>>> d
defaultdict[, {'i': 4, 'p': 2, 's': 4, 'm': 1}]

Ví dụ trong câu hỏi

ví dụ 1

Vì int đã được truyền dưới dạng default_factory, bất kỳ khóa không xác định nào sẽ trả về 0 theo mặc định.

>>> s = [['yellow', 1], ['blue', 2], ['yellow', 3], ['blue', 4], ['red', 1]]
>>> d = defaultdict[list]
>>> d.default_factory

>>> for k, v in s:
...     d[k].append[v]
>>> d.items[]
[['blue', [2, 4]], ['red', [1]], ['yellow', [1, 3]]]
>>> d
defaultdict[, {'blue': [2, 4], 'red': [1], 'yellow': [1, 3]}]

Bây giờ khi chuỗi được truyền trong vòng lặp, nó sẽ tăng số lượng các bảng chữ cái đó trong d. 0 bình luận chia sẻ

Chủ Đề