Hướng dẫn python defaultdict check if key exists - python defaultdict kiểm tra nếu khóa tồn tại

Tôi thường sử dụng thành ngữ sau khi làm việc với từ điển Python:

Show
try:
    val = dct[key]
except KeyError:
    print key, " is not valid"

Vì đối với các từ điển lớn, tuyên bố

if key in dct:
    # do something

không hiệu quả lắm (vì vậy tôi nhớ đọc, nhưng tôi cũng nhận thấy nó trong thực tế)

Hôm nay tôi đã làm việc với một DefaultDict và trong một khoảnh khắc tôi quên rằng DefaultDict sẽ không bao giờ cung cấp cho bạn một KeyError mà thay vào đó sẽ cập nhật từ điển gốc.

Làm thế nào tôi có thể thực hiện tra cứu mà không cập nhật DefaultDict? Tôi thực sự cần phải in một lỗi để người dùng có thể nhập lại khóa.

Cảm ơn bạn!

Cập nhật: Một số áp phích cho rằng niềm tin của tôi rằng

D.get(key, default) -> D[key] if key in D, else default
5 chậm là sai. Tôi đã quay lại và kiểm tra cuốn sách mà tôi đã đọc tốt hơn là sử dụng
D.get(key, default) -> D[key] if key in D, else default
6. Đó là cuốn sách nấu ăn Python năm 2002, Công thức 1.4 của Alex Martelli, cũng có thể được tìm thấy trực tuyến tại đây: Thêm một mục vào từ điển. Ký ức cũ là không đáng tin cậy! Công thức không đề cập đến "chậm hơn" và nó thậm chí không sử dụng
D.get(key, default) -> D[key] if key in D, else default
7 mà là
D.get(key, default) -> D[key] if key in D, else default
8. Nó chỉ đơn giản nói rằng
D.get(key, default) -> D[key] if key in D, else default
6 là Pythonic hơn (ít nhất là phiên bản sách của công thức). Cảm ơn vì sự điều chỉnh và câu trả lời.
Several posters suggested that my belief that
D.get(key, default) -> D[key] if key in D, else default
5 is slow is false. I went back and checked the book in which I had read that is better to use
D.get(key, default) -> D[key] if key in D, else default
6. It is 2002's Python Cookbook, Recipe 1.4 by Alex Martelli, which can be found also online here: Add an entry to dictionary. Old memories are so unreliable! The recipe doesn't mention "slower" and it's not even using
D.get(key, default) -> D[key] if key in D, else default
7 but
D.get(key, default) -> D[key] if key in D, else default
8. It simply says that
D.get(key, default) -> D[key] if key in D, else default
6 is more Pythonic (at least the book version of the recipe). Thanks for the correction and the answers.

Nếu - trong tuyên bố. Cách tiếp cận này sử dụng tuyên bố IF - trong để kiểm tra xem một khóa nhất định có tồn tại trong từ điển hay không. Cú pháp ..

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 type, a dictionary-like class that’s available for you in
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2.

Làm thế nào để bạn kiểm tra xem một từ điển có chứa một khóa?

Trong hướng dẫn này, bạn sẽ học:

  • Cách sử dụng loại Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 để xử lý các phím bị thiếu trong từ điểnhandling missing keys in a dictionary
  • Khi nào và tại sao sử dụng Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 chứ không phải là
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 thông thường
  • Cách sử dụng
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 để nhóm, đếm và tích lũy các hoạt độnggrouping, counting, and accumulating operations

Với kiến ​​thức này trong vành đai của bạn, bạn sẽ ở trong tình trạng tốt hơn để sử dụng hiệu quả loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 trong các thách thức lập trình hàng ngày của bạn.

Để tận dụng tối đa hướng dẫn này, bạn nên có một số hiểu biết trước đây về từ điển Python là gì và cách làm việc với chúng. Nếu bạn cần làm mới, thì hãy xem các tài nguyên sau:

  • Từ điển trong Python (Hướng dẫn)
  • Từ điển trong Python (khóa học)
  • Làm thế nào để lặp lại thông qua một từ điển trong Python

Xử lý các khóa bị thiếu trong từ điển

Một vấn đề phổ biến mà bạn có thể gặp phải khi làm việc với từ điển Python là làm thế nào để xử lý các phím bị thiếu. Nếu mã của bạn dựa trên từ điển hoặc nếu bạn đang tạo từ điển mọi lúc, thì bạn sẽ sớm nhận thấy rằng việc xử lý các ngoại lệ

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0 thường xuyên có thể khá khó chịu và có thể thêm sự phức tạp hơn vào mã của bạn. Với từ điển Python, bạn có ít nhất bốn cách có sẵn để xử lý các khóa bị thiếu:how to handle missing keys. If your code is heavily based on dictionaries, or if you’re creating dictionaries on the fly all the time, then you’ll soon notice that dealing with frequent
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0 exceptions can be quite annoying and can add extra complexity to your code. With Python dictionaries, you have at least four available ways to handle missing keys:

  1. Sử dụng
    >>> a_dict = {}
    >>> try:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... except KeyError:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    2
  2. Sử dụng
    >>> a_dict = {}
    >>> try:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... except KeyError:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    3
  3. Sử dụng thành ngữ
    >>> a_dict = {}
    >>> try:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... except KeyError:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    4
  4. Sử dụng khối
    >>> a_dict = {}
    >>> try:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... except KeyError:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    5 và
    >>> a_dict = {}
    >>> try:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... except KeyError:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    6

Các tài liệu Python giải thích

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 và
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 như sau:

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
9

Nếu

>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 nằm trong từ điển, hãy trả về giá trị của nó. Nếu không, chèn
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 với giá trị
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
2 và trả lại
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
2.
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
2 Mặc định là
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
6

Trả về giá trị cho

>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 nếu
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 nằm trong từ điển, khác
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
2. Nếu
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
2 không được đưa ra, nó mặc định là
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5, do đó phương pháp này không bao giờ tăng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0.

(Source)

Dưới đây, một ví dụ về cách bạn có thể sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để xử lý các khóa bị thiếu trong từ điển:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để tạo giá trị mặc định cho
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5. Lưu ý rằng từ điển của bạn,
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
6, hiện có một khóa mới gọi là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5 có giá trị là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
8. Chìa khóa này đã không tồn tại trước khi bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2. Cuối cùng, nếu bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 trên một khóa hiện có, thì cuộc gọi won đã có bất kỳ ảnh hưởng nào đến từ điển. Khóa của bạn sẽ giữ giá trị ban đầu thay vì giá trị mặc định mới.

Mặt khác, nếu bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3, thì bạn có thể mã hóa một cái gì đó như thế này:

>>>

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để tạo giá trị mặc định cho
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5. Lưu ý rằng từ điển của bạn,
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
6, hiện có một khóa mới gọi là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5 có giá trị là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
8. Chìa khóa này đã không tồn tại trước khi bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2. Cuối cùng, nếu bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 trên một khóa hiện có, thì cuộc gọi won đã có bất kỳ ảnh hưởng nào đến từ điển. Khóa của bạn sẽ giữ giá trị ban đầu thay vì giá trị mặc định mới.

D.get(key, default) -> D[key] if key in D, else default

Mặt khác, nếu bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3, thì bạn có thể mã hóa một cái gì đó như thế này:

Ở đây, bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 để tạo giá trị mặc định cho
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5, nhưng lần này, từ điển của bạn vẫn trống. Điều này là do
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 trả về giá trị mặc định, nhưng giá trị này không được thêm vào từ điển cơ bản. Ví dụ: nếu bạn có một từ điển gọi là
>>> # Wrong instantiation
>>> def_dict = defaultdict(list())
Traceback (most recent call last):
  File "", line 1, in 
    def_dict = defaultdict(list())
TypeError: first argument must be callable or None
5, thì bạn có thể giả sử rằng
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 hoạt động như thế này:

>>>

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để tạo giá trị mặc định cho
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5. Lưu ý rằng từ điển của bạn,
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
6, hiện có một khóa mới gọi là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5 có giá trị là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
8. Chìa khóa này đã không tồn tại trước khi bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2. Cuối cùng, nếu bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 trên một khóa hiện có, thì cuộc gọi won đã có bất kỳ ảnh hưởng nào đến từ điển. Khóa của bạn sẽ giữ giá trị ban đầu thay vì giá trị mặc định mới.

Mặt khác, nếu bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3, thì bạn có thể mã hóa một cái gì đó như thế này:

>>>

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để tạo giá trị mặc định cho
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5. Lưu ý rằng từ điển của bạn,
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
6, hiện có một khóa mới gọi là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5 có giá trị là
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
8. Chìa khóa này đã không tồn tại trước khi bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2. Cuối cùng, nếu bạn gọi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 trên một khóa hiện có, thì cuộc gọi won đã có bất kỳ ảnh hưởng nào đến từ điển. Khóa của bạn sẽ giữ giá trị ban đầu thay vì giá trị mặc định mới.

Mặt khác, nếu bạn sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3, thì bạn có thể mã hóa một cái gì đó như thế này:

Ở đây, bạn sử dụng >>> a_dict = {} >>> try: ... # Do something with 'key'... ... a_dict['key'] ... except KeyError: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 3 để tạo giá trị mặc định cho >>> # Correct instantiation >>> def_dict = defaultdict(list) # Pass list to .default_factory >>> def_dict['one'] = 1 # Add a key-value pair >>> def_dict['missing'] # Access a missing key returns an empty list [] >>> def_dict['another_missing'].append(4) # Modify a missing key >>> def_dict defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]}) 5, nhưng lần này, từ điển của bạn vẫn trống. Điều này là do >>> a_dict = {} >>> try: ... # Do something with 'key'... ... a_dict['key'] ... except KeyError: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 3 trả về giá trị mặc định, nhưng giá trị này không được thêm vào từ điển cơ bản. Ví dụ: nếu bạn có một từ điển gọi là >>> # Wrong instantiation >>> def_dict = defaultdict(list()) Traceback (most recent call last): File "", line 1, in def_dict = defaultdict(list()) TypeError: first argument must be callable or None 5, thì bạn có thể giả sử rằng >>> a_dict = {} >>> try: ... # Do something with 'key'... ... a_dict['key'] ... except KeyError: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 3 hoạt động như thế này:

Với mã giả này, bạn có thể hiểu cách

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 hoạt động trong nội bộ. Nếu khóa tồn tại, thì
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 sẽ trả về giá trị được ánh xạ vào khóa đó. Nếu không, giá trị mặc định được trả về. Mã của bạn không bao giờ tạo hoặc gán một giá trị cho
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0. Trong ví dụ này,
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
2 mặc định là
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

>>>

>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True

Mã trên cho thấy loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 là một lớp con của
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Điều này có nghĩa là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 kế thừa hầu hết các hành vi của
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Vì vậy, bạn có thể nói rằng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 giống như một từ điển thông thường.subclass of
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. This means that
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 inherits most of the behavior of
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. So, you can say that
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 is much like an ordinary dictionary.

Sự khác biệt chính giữa

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 là khi bạn cố gắng truy cập hoặc sửa đổi một
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 mà không có trong từ điển, một mặc định
if key in dct:
    # do something
37 được tự động đưa ra cho
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 đó. Để cung cấp chức năng này, loại Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 thực hiện hai điều:

  1. Nó ghi đè
    if key in dct:
        # do something
    
    40.
  2. Nó cho biết thêm
    if key in dct:
        # do something
    
    41, một biến thể hiện có thể ghi cần được cung cấp tại thời điểm khởi tạo.

Biến thể hiện

if key in dct:
    # do something
41 sẽ giữ đối số đầu tiên được chuyển vào
if key in dct:
    # do something
43. Đối số này có thể có một Python có thể gọi hợp lệ hoặc
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Nếu một cuộc gọi được cung cấp, thì nó sẽ tự động được gọi bởi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 bất cứ khi nào bạn cố gắng truy cập hoặc sửa đổi giá trị được liên kết với một khóa bị thiếu.

Hãy xem cách bạn có thể tạo và khởi tạo đúng cách

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1:

>>>

________số 8

Tại đây, bạn chuyển

if key in dct:
    # do something
47 đến
if key in dct:
    # do something
41 khi bạn tạo từ điển. Sau đó, bạn sử dụng
if key in dct:
    # do something
49 giống như một từ điển thông thường. Lưu ý rằng khi bạn cố gắng truy cập hoặc sửa đổi giá trị được ánh xạ thành khóa không tồn tại, từ điển gán cho nó giá trị mặc định xuất phát từ việc gọi
if key in dct:
    # do something
50.

Hãy nhớ rằng bạn phải chuyển một đối tượng có thể gọi Python hợp lệ cho

if key in dct:
    # do something
41, vì vậy hãy nhớ không gọi nó bằng cách sử dụng dấu ngoặc đơn vào thời điểm khởi tạo. Đây có thể là một vấn đề phổ biến khi bạn bắt đầu sử dụng loại Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Hãy xem mã sau:

>>>

>>> # Wrong instantiation
>>> def_dict = defaultdict(list())
Traceback (most recent call last):
  File "", line 1, in 
    def_dict = defaultdict(list())
TypeError: first argument must be callable or None

Tại đây, bạn cố gắng tạo một

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 bằng cách chuyển
if key in dct:
    # do something
50 đến
if key in dct:
    # do something
41. Cuộc gọi đến
if key in dct:
    # do something
50 tăng
if key in dct:
    # do something
57, cho bạn biết rằng đối số đầu tiên phải được gọi hoặc
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

Với phần giới thiệu này về loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1, bạn có thể bắt đầu mã hóa với các ví dụ thực tế. Một vài phần tiếp theo sẽ hướng dẫn bạn qua một số trường hợp sử dụng phổ biến mà bạn có thể dựa vào
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 để cung cấp một giải pháp thanh lịch, hiệu quả và pythonic.

Sử dụng loại Python >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 1

Đôi khi, bạn sẽ sử dụng một bộ sưu tập tích hợp có thể thay đổi (A

if key in dct:
    # do something
47,
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 hoặc
if key in dct:
    # do something
64) làm giá trị trong từ điển Python của bạn. Trong những trường hợp này, bạn sẽ cần phải khởi tạo các khóa trước khi sử dụng đầu tiên hoặc bạn sẽ nhận được
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0. Bạn có thể thực hiện quy trình này theo cách thủ công hoặc tự động hóa nó bằng Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Trong phần này, bạn sẽ học cách sử dụng loại Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 để giải quyết một số vấn đề lập trình phổ biến:initialize the keys before first use, or you’ll get a
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0. You can either do this process manually or automate it using a Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. In this section, you’ll learn how to use the Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 type for solving some common programming problems:

  • Nhóm các mục trong bộ sưu tập the items in a collection
  • Đếm các mặt hàng trong một bộ sưu tập the items in a collection
  • Tích lũy các giá trị trong một bộ sưu tập the values in a collection

Bạn sẽ bao gồm một số ví dụ sử dụng

if key in dct:
    # do something
47,
if key in dct:
    # do something
64,
if key in dct:
    # do something
70 và
if key in dct:
    # do something
71 để thực hiện nhóm, đếm và tích lũy các hoạt động theo cách thân thiện và hiệu quả của người dùng.

Nhóm các mặt hàng

Một cách sử dụng điển hình của loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 là đặt
if key in dct:
    # do something
41 thành
if key in dct:
    # do something
47 và sau đó xây dựng một từ điển ánh xạ các khóa vào danh sách các giá trị. Với
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 này, nếu bạn cố gắng truy cập vào bất kỳ khóa bị thiếu nào, thì từ điển sẽ chạy các bước sau:

  1. Gọi
    if key in dct:
        # do something
    
    50 để tạo một trống mới
    if key in dct:
        # do something
    
    47
    if key in dct:
        # do something
    
    50 to create a new empty
    if key in dct:
        # do something
    
    47
  2. Chèn
    if key in dct:
        # do something
    
    47 trống vào từ điển bằng cách sử dụng khóa bị thiếu là
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0
    the empty
    if key in dct:
        # do something
    
    47 into the dictionary using the missing key as
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0
  3. Trả về một tham chiếu đến
    if key in dct:
        # do something
    
    47 đó
    a reference to that
    if key in dct:
        # do something
    
    47

Điều này cho phép bạn viết mã như thế này:

>>>

if key in dct:
    # do something
0

Tại đây, bạn tạo một Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 được gọi là
if key in dct:
    # do something
82 và chuyển
if key in dct:
    # do something
47 đến
if key in dct:
    # do something
41. Lưu ý rằng ngay cả khi
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 được xác định, bạn có thể nối các giá trị vào nó mà không nhận được
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0. Điều đó vì
if key in dct:
    # do something
82 tự động gọi
if key in dct:
    # do something
41 để tạo giá trị mặc định cho
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 bị thiếu.

Bạn có thể sử dụng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 cùng với
if key in dct:
    # do something
47 để nhóm các mục theo trình tự hoặc bộ sưu tập. Giả sử rằng bạn đã lấy lại dữ liệu sau từ cơ sở dữ liệu của công ty bạn:

PhòngTên nhân viên
Việc bán hàngJohn Doe
Việc bán hàngJohn Doe
Martin SmithKế toán
Jane DoeTiếp thị
Jane DoeTiếp thị
Elizabeth SmithElizabeth Smith

Adam Doe

if key in dct:
    # do something
1

if key in dct:
    # do something
2

Với dữ liệu này, bạn tạo một

if key in dct:
    # do something
47 ban đầu của các đối tượng
if key in dct:
    # do something
93 như sau:

>>>

if key in dct:
    # do something
3

Trong ví dụ này, bạn nhóm nhân viên theo bộ phận của họ bằng cách sử dụng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 với
if key in dct:
    # do something
41 được đặt thành
if key in dct:
    # do something
47. Để làm điều này với một từ điển thông thường, bạn có thể sử dụng
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
04 như sau:

if key in dct:
    # do something
4

Mã này rất đơn giản và bạn sẽ tìm thấy mã tương tự khá thường xuyên trong công việc của mình với tư cách là một lập trình viên Python. Tuy nhiên, phiên bản

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 được cho là dễ đọc hơn và đối với các bộ dữ liệu lớn, nó cũng có thể nhanh hơn và hiệu quả hơn rất nhiều. Vì vậy, nếu tốc độ là mối quan tâm đối với bạn, thì bạn nên xem xét sử dụng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 thay vì tiêu chuẩn
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8.

Nhóm các mặt hàng độc đáo

Tiếp tục làm việc với dữ liệu của các phòng ban và nhân viên từ phần trước. Sau khi xử lý, bạn nhận ra rằng một vài nhân viên đã được nhân đôi trong cơ sở dữ liệu do nhầm lẫn. Bạn cần dọn dẹp dữ liệu và xóa các nhân viên được nhân đôi khỏi từ điển

if key in dct:
    # do something
96 của bạn. Để làm điều này, bạn có thể sử dụng
if key in dct:
    # do something
64 làm
if key in dct:
    # do something
41 và viết lại mã của bạn như sau:duplicated in the database by mistake. You need to clean up the data and remove the duplicated employees from your
if key in dct:
    # do something
96 dictionary. To do this, you can use a
if key in dct:
    # do something
64 as the
if key in dct:
    # do something
41 and rewrite your code as follows:

if key in dct:
    # do something
5

Trong ví dụ này, bạn đặt

if key in dct:
    # do something
41 thành
if key in dct:
    # do something
64. Các bộ là bộ sưu tập các đối tượng độc đáo, có nghĩa là bạn có thể tạo ra một
if key in dct:
    # do something
64 với các mục lặp đi lặp lại. Đây là một tính năng thực sự thú vị của các bộ, đảm bảo rằng bạn đã giành được các mục lặp lại trong từ điển cuối cùng của bạn.Sets are collections of unique objects, which means that you can’t create a
if key in dct:
    # do something
64 with repeated items. This is a really interesting feature of sets, which guarantees that you won’t have repeated items in your final dictionary.

Đếm các mặt hàng

Nếu bạn đặt

if key in dct:
    # do something
41 thành
if key in dct:
    # do something
70, thì
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 của bạn sẽ hữu ích cho việc đếm các mục trong một chuỗi hoặc bộ sưu tập. Khi bạn gọi
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
17 không có đối số, hàm trả về
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
18, đây là giá trị điển hình mà bạn sử dụng để khởi tạo bộ đếm.counting the items in a sequence or collection. When you call
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
17 with no arguments, the function returns
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
18, which is the typical value you’d use to initialize a counter.

Để tiếp tục với ví dụ về cơ sở dữ liệu của công ty, giả sử bạn muốn xây dựng một từ điển đếm số lượng nhân viên trên mỗi bộ phận. Trong trường hợp này, bạn có thể mã hóa một cái gì đó như thế này:

>>>

if key in dct:
    # do something
6

Tại đây, bạn đặt

if key in dct:
    # do something
41 thành
if key in dct:
    # do something
70. Khi bạn gọi
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
17 không có đối số, giá trị trả về là
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
18. Bạn có thể sử dụng giá trị mặc định này để bắt đầu đếm các nhân viên làm việc trong mỗi bộ phận. Để mã này hoạt động chính xác, bạn cần một bộ dữ liệu sạch. Không được có dữ liệu lặp đi lặp lại. Nếu không, bạn sẽ cần phải lọc ra các nhân viên lặp đi lặp lại.

Một ví dụ khác về việc đếm các mục là ví dụ

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
23, trong đó bạn đếm số lần mỗi chữ cái trong một từ được lặp lại. Hãy xem mã sau:

>>>

if key in dct:
    # do something
7

Trong mã trên, bạn tạo một

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 với
if key in dct:
    # do something
41 được đặt thành
if key in dct:
    # do something
70. Điều này đặt giá trị mặc định cho bất kỳ khóa đã cho thành
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
18. Sau đó, bạn sử dụng vòng lặp
if key in dct:
    # do something
97 để đi qua chuỗi
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
29 và sử dụng thao tác gán tăng cường để thêm
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
30 vào bộ đếm trong mỗi lần lặp. Các khóa của
if key in dct:
    # do something
82 sẽ là các chữ cái trong
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
23.

Vì việc đếm là một nhiệm vụ tương đối phổ biến trong lập trình, lớp giống như từ điển Python

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
33 được thiết kế đặc biệt để đếm các mục trong một chuỗi. Với
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
34, bạn có thể viết ví dụ
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
23 như sau:

>>>

if key in dct:
    # do something
8

Trong trường hợp này,

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
34 thực hiện tất cả công việc cho bạn! Bạn chỉ cần truyền theo một chuỗi và từ điển sẽ đếm các mục của nó, lưu trữ chúng dưới dạng các phím và số lượng là giá trị. Lưu ý rằng ví dụ này hoạt động vì chuỗi Python cũng là một loại trình tự.

Tích lũy giá trị

Đôi khi, bạn sẽ cần phải tính tổng số của các giá trị theo trình tự hoặc bộ sưu tập. Hãy nói rằng bạn có bảng Excel sau với dữ liệu về doanh số của trang web Python của bạn:total sum of the values in a sequence or collection. Let’s say you have the following Excel sheet with data about the sales of your Python website:

Các sản phẩmTháng bảyTháng támTháng 9
Sách1250.00 1300.00 1420.00
Hướng dẫn560.00 630.00 750.00
Khóa học2500.00 2430.00 2750.00

Tiếp theo, bạn xử lý dữ liệu bằng Python và nhận được các đối tượng

if key in dct:
    # do something
47 sau của
if key in dct:
    # do something
93:

if key in dct:
    # do something
9

Với dữ liệu này, bạn muốn tính tổng thu nhập trên mỗi sản phẩm. Để làm điều đó, bạn có thể sử dụng Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 với
if key in dct:
    # do something
71 là
if key in dct:
    # do something
41 và sau đó mã hóa một cái gì đó như thế này:

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
0

Đây là những gì mã này làm:

  • Trong dòng 1, bạn nhập loại Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1.
    , you import the Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 type.
  • Trong dòng 3, bạn tạo một đối tượng
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 với
    if key in dct:
        # do something
    
    41 được đặt thành
    if key in dct:
        # do something
    
    71.
    , you create a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 object with
    if key in dct:
        # do something
    
    41 set to
    if key in dct:
        # do something
    
    71.
  • Trong dòng 4, bạn xác định vòng lặp
    if key in dct:
        # do something
    
    97 để lặp lại thông qua các mục của
    >>> a_dict = {}
    >>> a_dict['missing_key']
    Traceback (most recent call last):
      File "", line 1, in 
        a_dict['missing_key']
    KeyError: 'missing_key'
    >>> a_dict.setdefault('missing_key', 'default value')
    'default value'
    >>> a_dict['missing_key']
    'default value'
    >>> a_dict.setdefault('missing_key', 'another default value')
    'default value'
    >>> a_dict
    {'missing_key': 'default value'}
    
    47.
    , you define a
    if key in dct:
        # do something
    
    97 loop to iterate through the items of
    >>> a_dict = {}
    >>> a_dict['missing_key']
    Traceback (most recent call last):
      File "", line 1, in 
        a_dict['missing_key']
    KeyError: 'missing_key'
    >>> a_dict.setdefault('missing_key', 'default value')
    'default value'
    >>> a_dict['missing_key']
    'default value'
    >>> a_dict.setdefault('missing_key', 'another default value')
    'default value'
    >>> a_dict
    {'missing_key': 'default value'}
    
    47.
  • Trong dòng 5, bạn sử dụng một hoạt động gán tăng cường (
    >>> a_dict = {}
    >>> a_dict['missing_key']
    Traceback (most recent call last):
      File "", line 1, in 
        a_dict['missing_key']
    KeyError: 'missing_key'
    >>> a_dict.setdefault('missing_key', 'default value')
    'default value'
    >>> a_dict['missing_key']
    'default value'
    >>> a_dict.setdefault('missing_key', 'another default value')
    'default value'
    >>> a_dict
    {'missing_key': 'default value'}
    
    48) để tích lũy thu nhập trên mỗi sản phẩm trong từ điển.
    , you use an augmented assignment operation (
    >>> a_dict = {}
    >>> a_dict['missing_key']
    Traceback (most recent call last):
      File "", line 1, in 
        a_dict['missing_key']
    KeyError: 'missing_key'
    >>> a_dict.setdefault('missing_key', 'default value')
    'default value'
    >>> a_dict['missing_key']
    'default value'
    >>> a_dict.setdefault('missing_key', 'another default value')
    'default value'
    >>> a_dict
    {'missing_key': 'default value'}
    
    48) to accumulate the incomes per product in the dictionary.

Vòng lặp thứ hai lặp lại thông qua các mục của

if key in dct:
    # do something
82 và in thu nhập lên màn hình của bạn.

Nếu bạn đặt tất cả mã này vào một tệp có tên

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
50 và chạy nó từ dòng lệnh của bạn, thì bạn sẽ nhận được đầu ra sau:

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
1

Bây giờ bạn có một bản tóm tắt thu nhập cho mỗi sản phẩm, vì vậy bạn có thể đưa ra quyết định về chiến lược nào để theo dõi để tăng tổng thu nhập của trang web của bạn.

Lặn sâu hơn vào >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 1

Cho đến nay, bạn đã học được cách sử dụng loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 bằng cách mã hóa một số ví dụ thực tế. Tại thời điểm này, bạn có thể đi sâu hơn vào việc thực hiện loại và các chi tiết làm việc khác. Đó là những gì bạn sẽ bao gồm trong một vài phần tiếp theo.type implementation and other working details. That’s what you’ll be covering in the next few sections.

>>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 1 so với >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 8

Để bạn hiểu rõ hơn về loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1, một bài tập tốt sẽ là so sánh nó với siêu lớp của nó,
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Nếu bạn muốn biết các phương thức và thuộc tính dành riêng cho loại Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1, thì bạn có thể chạy dòng mã sau:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
2

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
58 để lấy danh sách các thuộc tính hợp lệ cho
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Sau đó, bạn sử dụng sự khác biệt
if key in dct:
    # do something
64 để có được tập hợp các phương thức và thuộc tính mà bạn chỉ có thể tìm thấy trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Như bạn có thể thấy, sự khác biệt giữa hai lớp này là. Bạn có hai phương thức và một thuộc tính thể hiện. Bảng sau đây cho thấy các phương thức và thuộc tính dành cho:

Phương thức hoặc thuộc tínhSự mô tả
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
63
Cung cấp hỗ trợ cho
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
64
if key in dct:
    # do something
41
Giữ được gọi là
if key in dct:
    # do something
40 để tự động cung cấp các giá trị mặc định cho các khóa bị thiếu
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
67
Được gọi khi
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
68 có thể tìm thấy
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0

Trong bảng trên, bạn có thể thấy các phương thức và thuộc tính tạo ra

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 khác với
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 thông thường. Phần còn lại của các phương pháp giống nhau trong cả hai lớp.

Ngoài ra, bạn có thể nhận thấy rằng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 bằng với
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 với cùng một mục:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
3

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
58 để lấy danh sách các thuộc tính hợp lệ cho
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Sau đó, bạn sử dụng sự khác biệt
if key in dct:
    # do something
64 để có được tập hợp các phương thức và thuộc tính mà bạn chỉ có thể tìm thấy trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Như bạn có thể thấy, sự khác biệt giữa hai lớp này là. Bạn có hai phương thức và một thuộc tính thể hiện. Bảng sau đây cho thấy các phương thức và thuộc tính dành cho:

>>> a_dict = {} >>> a_dict['missing_key'] Traceback (most recent call last): File "", line 1, in a_dict['missing_key'] KeyError: 'missing_key' >>> a_dict.setdefault('missing_key', 'default value') 'default value' >>> a_dict['missing_key'] 'default value' >>> a_dict.setdefault('missing_key', 'another default value') 'default value' >>> a_dict {'missing_key': 'default value'} 76

Phương thức hoặc thuộc tínhcallable that takes no arguments and returns a value. This argument is assigned to the instance attribute,

if key in dct:
    # do something
41. For this, you can use any callable, including functions, methods, classes, type objects, or any other valid callable. The default value of
if key in dct:
    # do something
41 is
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

Sự mô tả

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
4

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
58 để lấy danh sách các thuộc tính hợp lệ cho
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Sau đó, bạn sử dụng sự khác biệt
if key in dct:
    # do something
64 để có được tập hợp các phương thức và thuộc tính mà bạn chỉ có thể tìm thấy trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Như bạn có thể thấy, sự khác biệt giữa hai lớp này là. Bạn có hai phương thức và một thuộc tính thể hiện. Bảng sau đây cho thấy các phương thức và thuộc tính dành cho:

Phương thức hoặc thuộc tính

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
5

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
58 để lấy danh sách các thuộc tính hợp lệ cho
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Sau đó, bạn sử dụng sự khác biệt
if key in dct:
    # do something
64 để có được tập hợp các phương thức và thuộc tính mà bạn chỉ có thể tìm thấy trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Như bạn có thể thấy, sự khác biệt giữa hai lớp này là. Bạn có hai phương thức và một thuộc tính thể hiện. Bảng sau đây cho thấy các phương thức và thuộc tính dành cho:

Phương thức hoặc thuộc tính

Sự mô tả

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
63non-callable object to the initializer of the Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 type, then you’ll get a
if key in dct:
    # do something
57 like in the following code:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
6

Trong mã trên, bạn sử dụng

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
58 để lấy danh sách các thuộc tính hợp lệ cho
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Sau đó, bạn sử dụng sự khác biệt
if key in dct:
    # do something
64 để có được tập hợp các phương thức và thuộc tính mà bạn chỉ có thể tìm thấy trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Như bạn có thể thấy, sự khác biệt giữa hai lớp này là. Bạn có hai phương thức và một thuộc tính thể hiện. Bảng sau đây cho thấy các phương thức và thuộc tính dành cho:

Phương thức hoặc thuộc tính

Hãy xem mã sau:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
7

Trong đoạn mã này, bạn có thể thấy rằng

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
41 trả về
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 thay vì giá trị mặc định mà
if key in dct:
    # do something
41 sẽ cung cấp. Điều đó vì
if key in dct:
    # do something
41 chỉ được gọi từ
if key in dct:
    # do something
40, không được gọi bởi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3.

Lưu ý rằng bạn cũng có thể thêm các giá trị tùy ý vào Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Điều này có nghĩa là bạn không giới hạn ở các giá trị có cùng loại với các giá trị được tạo bởi
if key in dct:
    # do something
41. Đây là một ví dụ:arbitrary values to a Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. This means that you’re not limited to values with the same type as the values generated by
if key in dct:
    # do something
41. Here’s an example:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
8

Trong đoạn mã này, bạn có thể thấy rằng

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
41 trả về
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 thay vì giá trị mặc định mà
if key in dct:
    # do something
41 sẽ cung cấp. Điều đó vì
if key in dct:
    # do something
41 chỉ được gọi từ
if key in dct:
    # do something
40, không được gọi bởi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3.

Lưu ý rằng bạn cũng có thể thêm các giá trị tùy ý vào Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Điều này có nghĩa là bạn không giới hạn ở các giá trị có cùng loại với các giá trị được tạo bởi
if key in dct:
    # do something
41. Đây là một ví dụ:change or update the callable you initially assign to
if key in dct:
    # do something
41 in the same way you would do with any instance attribute:

>>>

>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
9

Trong đoạn mã này, bạn có thể thấy rằng

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
41 trả về
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 thay vì giá trị mặc định mà
if key in dct:
    # do something
41 sẽ cung cấp. Điều đó vì
if key in dct:
    # do something
41 chỉ được gọi từ
if key in dct:
    # do something
40, không được gọi bởi
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3.

Lưu ý rằng bạn cũng có thể thêm các giá trị tùy ý vào Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Điều này có nghĩa là bạn không giới hạn ở các giá trị có cùng loại với các giá trị được tạo bởi
if key in dct:
    # do something
41. Đây là một ví dụ:

Tại đây, bạn tạo một >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 1 và chuyển trong một đối tượng if key in dct: # do something 47 cho if key in dct: # do something 41. Điều này đặt các giá trị mặc định của bạn là danh sách trống. Tuy nhiên, bạn có thể tự do thêm một khóa mới giữ các giá trị thuộc loại khác. Đó là trường hợp với khóa >>> a_dict = {} >>> a_dict.get('missing_key', 'default value') 'default value' >>> a_dict {} 52, chứa một đối tượng >>> a_dict = {} >>> a_dict.get('missing_key', 'default value') 'default value' >>> a_dict {} 53 thay vì đối tượng if key in dct: # do something 47.

Cuối cùng, bạn luôn có thể thay đổi hoặc cập nhật bản gọi mà bạn gán ban đầu cho

if key in dct:
    # do something
41 giống như cách bạn sẽ làm với bất kỳ thuộc tính nào:

>>>

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
0

Trong mã trên, bạn thay đổi

if key in dct:
    # do something
41 từ
if key in dct:
    # do something
47 thành
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
53. Bây giờ, bất cứ khi nào bạn cố gắng truy cập vào một khóa bị thiếu, giá trị mặc định của bạn sẽ là một chuỗi trống (
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
59).

Tùy thuộc vào các trường hợp sử dụng của bạn cho loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1, bạn có thể cần phải đóng băng từ điển sau khi bạn hoàn thành việc tạo nó và làm cho nó chỉ đọc. Để làm điều này, bạn có thể đặt
if key in dct:
    # do something
41 thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 sau khi bạn hoàn thành việc điền từ điển. Bằng cách này, từ điển của bạn sẽ hoạt động như một
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 tiêu chuẩn, điều đó có nghĩa là bạn đã giành được các giá trị mặc định được tạo tự động hơn.

>>>

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
1

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 so với
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
04

Như bạn đã thấy trước đây,

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 cung cấp
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2, điều này sẽ cho phép bạn gán các giá trị cho các khóa bị thiếu khi đang bay. Ngược lại, với
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1, bạn có thể chỉ định giá trị mặc định lên phía trước khi bạn khởi tạo container. Bạn có thể sử dụng
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để gán các giá trị mặc định như sau:

Trong mã này, bạn tạo một từ điển thông thường và sau đó sử dụng

>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 để gán một giá trị (
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
11) cho khóa
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5, chưa được xác định.

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
2

Mặt khác, nếu bạn sử dụng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 để hoàn thành cùng một nhiệm vụ, thì giá trị mặc định được tạo theo yêu cầu bất cứ khi nào bạn cố gắng truy cập hoặc sửa đổi khóa bị thiếu. Lưu ý rằng, với
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1, giá trị mặc định được tạo bởi giá trị gọi bạn chuyển lên phía trước cho bộ khởi tạo của lớp. Ở đây, cách thức hoạt động của nó:

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
3

Ở đây, trước tiên bạn nhập loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 từ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2. Sau đó, bạn tạo một
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 và chuyển
if key in dct:
    # do something
47 đến
if key in dct:
    # do something
41. Khi bạn cố gắng truy cập vào một khóa bị thiếu,
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 gọi nội bộ
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
07, giữ một tham chiếu đến
if key in dct:
    # do something
47 và gán giá trị kết quả (trống
if key in dct:
    # do something
47) cho
>>> # Correct instantiation
>>> def_dict = defaultdict(list)  # Pass list to .default_factory
>>> def_dict['one'] = 1  # Add a key-value pair
>>> def_dict['missing']  # Access a missing key returns an empty list
[]
>>> def_dict['another_missing'].append(4)  # Modify a missing key
>>> def_dict
defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
5.

Mã trong hai ví dụ trên thực hiện cùng một công việc, nhưng phiên bản

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 được cho là dễ đọc hơn, thân thiện với người dùng, pythonic và đơn giản.

>>>

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
4

Cuối cùng, sử dụng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 để xử lý các phím bị thiếu có thể nhanh hơn so với sử dụng
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
04. Hãy xem một ví dụ sau:

Nếu bạn chạy tập lệnh từ dòng lệnh hệ thống của bạn, thì bạn sẽ nhận được một cái gì đó như sau:

Ở đây, bạn sử dụng

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
88 để đo thời gian thực hiện của
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
89 và
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
90. Các chức năng này thực hiện các hành động tương đương, nhưng lần đầu tiên sử dụng
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
04 và thứ hai sử dụng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Biện pháp thời gian sẽ phụ thuộc vào phần cứng hiện tại của bạn, nhưng bạn có thể thấy ở đây rằng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 nhanh hơn
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
04. Sự khác biệt này có thể trở nên quan trọng hơn khi bộ dữ liệu trở nên lớn hơn.

  1. Ngoài ra, bạn cần xem xét rằng việc tạo

    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 thông thường có thể nhanh hơn so với việc tạo
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1. Hãy xem mã này:
    and you’re dealing with missing keys all the time, then you should consider using a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 rather than a regular
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8.

  2. Nếu các mục từ điển của bạn cần được khởi tạo với giá trị mặc định không đổi, thì bạn nên xem xét sử dụng

    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 thay vì
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8.
    with a constant default value, then you should consider using a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 instead of a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8.

  3. Nếu mã của bạn dựa vào từ điển để tổng hợp, tích lũy, đếm hoặc nhóm các giá trị và hiệu suất là một mối quan tâm, thì bạn nên xem xét sử dụng

    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1. for aggregating, accumulating, counting, or grouping values, and performance is a concern, then you should consider using a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1.

Bạn có thể xem xét các hướng dẫn trên khi quyết định sử dụng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 hay
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1.

D.get(key, default) -> D[key] if key in D, else default 20

Đằng sau hậu trường, loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 hoạt động bằng cách gọi
if key in dct:
    # do something
41 để cung cấp các giá trị mặc định cho các khóa bị thiếu. Cơ chế làm cho điều này có thể là
if key in dct:
    # do something
40, một phương pháp đặc biệt được hỗ trợ bởi tất cả các loại ánh xạ tiêu chuẩn, bao gồm
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1.

Vậy,

if key in dct:
    # do something
40 hoạt động như thế nào? Nếu bạn đặt
if key in dct:
    # do something
41 thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5, thì
if key in dct:
    # do something
40 sẽ tăng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0 với
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 như một đối số. Mặt khác,
if key in dct:
    # do something
41 được gọi mà không có đối số để cung cấp một mặc định
if key in dct:
    # do something
37 cho
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 đã cho.
if key in dct:
    # do something
37 này được chèn vào từ điển và cuối cùng đã trở lại. Nếu gọi
if key in dct:
    # do something
41 sẽ đặt ra một ngoại lệ, thì ngoại lệ sẽ không thay đổi.

Mã sau đây cho thấy việc triển khai Python khả thi cho

if key in dct:
    # do something
40:

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
5

Đây là những gì mã này làm:

  • Trong dòng 1, bạn xác định phương thức và chữ ký của nó., you define the method and its signature.
  • Trong dòng 2 và 3, bạn kiểm tra xem
    if key in dct:
        # do something
    
    41 có phải là
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5 không. Nếu vậy, sau đó bạn tăng
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    0 với
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 như một đối số.
    , you test to see if
    if key in dct:
        # do something
    
    41 is
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5. If so, then you raise a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    0 with the
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 as an argument.
  • Trong dòng 4 và 5, bạn kiểm tra xem
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 không có trong từ điển. Nếu nó không, thì bạn gọi
    if key in dct:
        # do something
    
    41 và gán giá trị trả về của nó cho
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0.
    , you check if the
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 is not in the dictionary. If it’s not, then you call
    if key in dct:
        # do something
    
    41 and assign its return value to the
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0.
  • Trong dòng 6, bạn trả lại
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 như mong đợi.
    , you return the
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 as expected.

Hãy nhớ rằng sự hiện diện của

if key in dct:
    # do something
40 trong ánh xạ không ảnh hưởng đến hành vi của các phương pháp khác để tìm các khóa, chẳng hạn như
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
3 hoặc
D.get(key, default) -> D[key] if key in D, else default
48, trong đó thực hiện toán tử
D.get(key, default) -> D[key] if key in D, else default
7. Điều đó bởi vì
if key in dct:
    # do something
40 chỉ được gọi bởi
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
68 khi không tìm thấy
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
0 được yêu cầu trong từ điển. Bất cứ điều gì
if key in dct:
    # do something
40 trả lại hoặc tăng sau đó được trả lại hoặc tăng lên bởi
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
68.

Bây giờ, bạn đã bao gồm một triển khai Python thay thế cho

if key in dct:
    # do something
40, sẽ là một bài tập tốt để cố gắng mô phỏng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 với một số mã Python. Đó là những gì bạn sẽ làm trong phần tiếp theo.

Mô phỏng loại Python >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 1

Trong phần này, bạn sẽ mã hóa một lớp Python sẽ hoạt động giống như

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Để làm điều đó, bạn sẽ phân lớp con
D.get(key, default) -> D[key] if key in D, else default
59 và sau đó thêm
if key in dct:
    # do something
40. Ngoài ra, bạn cần thêm một thuộc tính thể hiện được gọi là
if key in dct:
    # do something
41, sẽ giữ được gọi có thể gọi để tạo các giá trị mặc định theo yêu cầu. Ở đây, một đoạn mã mô phỏng hầu hết các hành vi của loại Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1:

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
6

Ở đây, cách thức hoạt động của mã này:

  • Trong dòng 1, bạn nhập

    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    2 để có quyền truy cập vào
    D.get(key, default) -> D[key] if key in D, else default
    
    64.
    , you import
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    2 to get access to
    D.get(key, default) -> D[key] if key in D, else default
    
    64.

  • Trong dòng 3, bạn tạo một lớp các lớp con

    D.get(key, default) -> D[key] if key in D, else default
    
    64., you create a class that subclasses
    D.get(key, default) -> D[key] if key in D, else default
    
    64.

  • Trong dòng 4, bạn xác định trình khởi tạo lớp

    D.get(key, default) -> D[key] if key in D, else default
    
    66. Phương thức này có một đối số gọi là
    D.get(key, default) -> D[key] if key in D, else default
    
    67 để giữ được gọi có thể gọi mà bạn sẽ sử dụng để tạo các giá trị mặc định. Lưu ý rằng
    D.get(key, default) -> D[key] if key in D, else default
    
    67 mặc định là
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5, giống như trong
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1. Bạn cũng cần
    D.get(key, default) -> D[key] if key in D, else default
    
    71 và
    D.get(key, default) -> D[key] if key in D, else default
    
    72 để mô phỏng hành vi bình thường của
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 thông thường.
    , you define the class initializer
    D.get(key, default) -> D[key] if key in D, else default
    
    66. This method takes an argument called
    D.get(key, default) -> D[key] if key in D, else default
    
    67 to hold the callable that you’ll use to generate the default values. Notice that
    D.get(key, default) -> D[key] if key in D, else default
    
    67 defaults to
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5, just like in a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1. You also need the
    D.get(key, default) -> D[key] if key in D, else default
    
    71 and
    D.get(key, default) -> D[key] if key in D, else default
    
    72 for emulating the normal behavior of a regular
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8.

  • Trong dòng 5, bạn gọi là siêu lớp

    D.get(key, default) -> D[key] if key in D, else default
    
    66. Điều này có nghĩa là bạn sẽ gọi
    D.get(key, default) -> D[key] if key in D, else default
    
    75 và vượt qua
    D.get(key, default) -> D[key] if key in D, else default
    
    71 và
    D.get(key, default) -> D[key] if key in D, else default
    
    72 cho nó.
    , you call the superclass
    D.get(key, default) -> D[key] if key in D, else default
    
    66. This means that you’re calling
    D.get(key, default) -> D[key] if key in D, else default
    
    75 and passing
    D.get(key, default) -> D[key] if key in D, else default
    
    71 and
    D.get(key, default) -> D[key] if key in D, else default
    
    72 to it.

  • Trong dòng 6, trước tiên bạn kiểm tra xem

    D.get(key, default) -> D[key] if key in D, else default
    
    67 có phải là đối tượng có thể gọi hợp lệ không. Trong trường hợp này, bạn sử dụng
    D.get(key, default) -> D[key] if key in D, else default
    
    79, đây là hàm tích hợp trả về
    D.get(key, default) -> D[key] if key in D, else default
    
    80 nếu
    D.get(key, default) -> D[key] if key in D, else default
    
    81 dường như là một người có thể gọi được và nếu không thì trả về
    D.get(key, default) -> D[key] if key in D, else default
    
    82. Kiểm tra này đảm bảo rằng bạn có thể gọi
    >>> a_dict = {}
    >>> a_dict.get('missing_key', 'default value')
    'default value'
    >>> a_dict
    {}
    
    07 nếu bạn cần tạo một mặc định
    if key in dct:
        # do something
    
    37 cho bất kỳ
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 bị thiếu. Sau đó, bạn kiểm tra xem
    if key in dct:
        # do something
    
    41 không phải là
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5.
    , you first check if
    D.get(key, default) -> D[key] if key in D, else default
    
    67 is a valid callable object. In this case, you use
    D.get(key, default) -> D[key] if key in D, else default
    
    79, which is a built-in function that returns
    D.get(key, default) -> D[key] if key in D, else default
    
    80 if
    D.get(key, default) -> D[key] if key in D, else default
    
    81 appears to be a callable and otherwise returns
    D.get(key, default) -> D[key] if key in D, else default
    
    82. This check ensures that you can call
    >>> a_dict = {}
    >>> a_dict.get('missing_key', 'default value')
    'default value'
    >>> a_dict
    {}
    
    07 if you need to generate a default
    if key in dct:
        # do something
    
    37 for any missing
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0. Then, you check if
    if key in dct:
        # do something
    
    41 is not
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5.

  • Trong dòng 7, bạn tăng

    if key in dct:
        # do something
    
    57 giống như một
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 thông thường sẽ làm nếu
    D.get(key, default) -> D[key] if key in D, else default
    
    67 là
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5.
    , you raise a
    if key in dct:
        # do something
    
    57 just like a regular
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 would do if
    D.get(key, default) -> D[key] if key in D, else default
    
    67 is
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5.

  • Trong dòng 8, bạn khởi tạo

    if key in dct:
        # do something
    
    41., you initialize
    if key in dct:
        # do something
    
    41.

  • Trong dòng 10, bạn xác định

    if key in dct:
        # do something
    
    40, được thực hiện như bạn đã thấy trước đây. Hãy nhớ lại rằng
    if key in dct:
        # do something
    
    40 được tự động gọi bởi
    >>> a_dict = {}
    >>> a_dict['missing_key']
    Traceback (most recent call last):
      File "", line 1, in 
        a_dict['missing_key']
    KeyError: 'missing_key'
    >>> a_dict.setdefault('missing_key', 'default value')
    'default value'
    >>> a_dict['missing_key']
    'default value'
    >>> a_dict.setdefault('missing_key', 'another default value')
    'default value'
    >>> a_dict
    {'missing_key': 'default value'}
    
    68 khi một
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 nhất định không nằm trong từ điển.
    , you define
    if key in dct:
        # do something
    
    40, which is implemented as you saw before. Recall that
    if key in dct:
        # do something
    
    40 is automatically called by
    >>> a_dict = {}
    >>> a_dict['missing_key']
    Traceback (most recent call last):
      File "", line 1, in 
        a_dict['missing_key']
    KeyError: 'missing_key'
    >>> a_dict.setdefault('missing_key', 'default value')
    'default value'
    >>> a_dict['missing_key']
    'default value'
    >>> a_dict.setdefault('missing_key', 'another default value')
    'default value'
    >>> a_dict
    {'missing_key': 'default value'}
    
    68 when a given
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    0 is not in a dictionary.

Nếu bạn cảm thấy trong tâm trạng để đọc một số mã C, thì bạn có thể xem mã đầy đủ cho loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 trong mã nguồn CPython.

Bây giờ bạn đã hoàn thành việc mã hóa lớp này, bạn có thể kiểm tra nó bằng cách đặt mã vào tập lệnh Python có tên là

D.get(key, default) -> D[key] if key in D, else default
98 và nhập nó từ một phiên tương tác. Đây là một ví dụ:

>>>

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
7

Ở đây, lần đầu tiên bạn nhập

D.get(key, default) -> D[key] if key in D, else default
99 từ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
00. Sau đó, bạn tạo một thể hiện là
D.get(key, default) -> D[key] if key in D, else default
99 và chuyển
if key in dct:
    # do something
47 đến
if key in dct:
    # do something
41. Nếu bạn cố gắng truy cập vào một khóa với hoạt động đăng ký, như
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
04, thì
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
68 sẽ tự động được Python gọi một cách tự động. Nếu khóa không nằm trong từ điển, thì
if key in dct:
    # do something
40 được gọi, tạo ra giá trị mặc định bằng cách gọi
>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
07.

Bạn cũng có thể thay đổi được gán cho

if key in dct:
    # do something
41 bằng cách sử dụng thao tác gán thông thường như trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
09. Cuối cùng, nếu bạn chuyển
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 đến
if key in dct:
    # do something
41, thì bạn sẽ nhận được
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
0 khi cố gắng lấy một khóa bị thiếu.

Bạn có thể tự hỏi tại sao bạn phân lớp

D.get(key, default) -> D[key] if key in D, else default
59 thay vì
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 thông thường cho ví dụ này. Lý do chính cho điều này là các loại hình con tích hợp có thể dễ bị lỗi vì mã C của các bản dựng dường như không liên tục gọi các phương thức đặc biệt được ghi đè bởi người dùng.

Dưới đây, một ví dụ cho thấy một số vấn đề mà bạn có thể gặp phải khi phân lớp

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8:

>>>

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
8

Trong ví dụ này, bạn tạo

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16, một lớp là các lớp con
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Việc thực hiện
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn luôn đặt các giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Nếu bạn tạo một thể hiện là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16 và chuyển một đối số từ khóa cho trình khởi tạo của nó, thì bạn sẽ nhận thấy lớp không gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn để xử lý bài tập. Bạn biết rằng vì khóa
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
22 đã được gán
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

Ngược lại, nếu bạn chạy một hoạt động đăng ký như

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
24, thì bạn sẽ nhận thấy rằng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
25 được đặt thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 thay vì
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
27. Vì vậy, lần này bạn có thể nói rằng các hoạt động đăng ký gọi tùy chỉnh của bạn. Cuối cùng, lưu ý rằng
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 cũng không gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18, vì khóa
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
31 của bạn kết thúc với giá trị
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
32.

D.get(key, default) -> D[key] if key in D, else default
64 không kế thừa từ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 nhưng mô phỏng hành vi của một từ điển tiêu chuẩn. Lớp có một thể hiện nội bộ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 được gọi là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
36, được sử dụng để lưu trữ nội dung của từ điển.
D.get(key, default) -> D[key] if key in D, else default
64 là một lớp đáng tin cậy hơn khi tạo ra các ánh xạ tùy chỉnh. Nếu bạn sử dụng
D.get(key, default) -> D[key] if key in D, else default
64, thì bạn sẽ tránh được các vấn đề bạn đã thấy trước đây. Để chứng minh điều này, hãy quay lại mã cho
D.get(key, default) -> D[key] if key in D, else default
99 và thêm phương thức sau:
doesn’t inherit from
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 but simulates the behavior of a standard dictionary. The class has an internal
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 instance called
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
36, which is used to store the content of the dictionary.
D.get(key, default) -> D[key] if key in D, else default
64 is a more reliable class when it comes to creating custom mappings. If you use
D.get(key, default) -> D[key] if key in D, else default
64, then you’ll be avoiding the issues you saw before. To prove this, go back to the code for
D.get(key, default) -> D[key] if key in D, else default
99 and add the following method:

>>> a_dict = {}
>>> a_dict.get('missing_key', 'default value')
'default value'
>>> a_dict
{}
9

Tại đây, bạn thêm một

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 tùy chỉnh gọi là siêu lớp
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18, luôn đặt giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Cập nhật mã này trong tập lệnh của bạn
D.get(key, default) -> D[key] if key in D, else default
98 và nhập nó từ một phiên tương tác như sau:

>>>

D.get(key, default) -> D[key] if key in D, else default
0

Trong ví dụ này, bạn tạo

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16, một lớp là các lớp con
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Việc thực hiện
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn luôn đặt các giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Nếu bạn tạo một thể hiện là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16 và chuyển một đối số từ khóa cho trình khởi tạo của nó, thì bạn sẽ nhận thấy lớp không gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn để xử lý bài tập. Bạn biết rằng vì khóa
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
22 đã được gán
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

Ngược lại, nếu bạn chạy một hoạt động đăng ký như >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 24, thì bạn sẽ nhận thấy rằng >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 25 được đặt thành >>> from collections import defaultdict >>> issubclass(defaultdict, dict) True 5 thay vì >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 27. Vì vậy, lần này bạn có thể nói rằng các hoạt động đăng ký gọi tùy chỉnh của bạn. Cuối cùng, lưu ý rằng >>> a_dict = {} >>> try: ... # Do something with 'key'... ... a_dict['key'] ... except KeyError: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 2 cũng không gọi >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 18, vì khóa >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 31 của bạn kết thúc với giá trị >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 32.

D.get(key, default) -> D[key] if key in D, else default
64 không kế thừa từ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 nhưng mô phỏng hành vi của một từ điển tiêu chuẩn. Lớp có một thể hiện nội bộ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 được gọi là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
36, được sử dụng để lưu trữ nội dung của từ điển.
D.get(key, default) -> D[key] if key in D, else default
64 là một lớp đáng tin cậy hơn khi tạo ra các ánh xạ tùy chỉnh. Nếu bạn sử dụng
D.get(key, default) -> D[key] if key in D, else default
64, thì bạn sẽ tránh được các vấn đề bạn đã thấy trước đây. Để chứng minh điều này, hãy quay lại mã cho
D.get(key, default) -> D[key] if key in D, else default
99 và thêm phương thức sau:

  1. >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    54
  2. >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    55

Tại đây, bạn thêm một

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 tùy chỉnh gọi là siêu lớp
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18, luôn đặt giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Cập nhật mã này trong tập lệnh của bạn
D.get(key, default) -> D[key] if key in D, else default
98 và nhập nó từ một phiên tương tác như sau:

Trong trường hợp này, khi bạn khởi tạo D.get(key, default) -> D[key] if key in D, else default 99 và chuyển >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 22 cho trình khởi tạo lớp, tùy chỉnh >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 46 của bạn được gọi. Ngoài ra, khi bạn gán một giá trị cho khóa >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 25, >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 46 cũng được gọi là tốt. Bây giờ bạn có một D.get(key, default) -> D[key] if key in D, else default 99 liên tục gọi các phương thức đặc biệt tùy chỉnh của bạn. Lưu ý rằng tất cả các giá trị trong từ điển đều bằng >>> from collections import defaultdict >>> issubclass(defaultdict, dict) True 5 bây giờ.

Chuyển các đối số cho

if key in dct:
    # do something
41
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
54
. Suppose you want to create a function to generate default values in a
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. The function does some processing and returns a value, but you need to pass an argument for the function to work correctly. Here’s an example:

>>>

D.get(key, default) -> D[key] if key in D, else default
1

Trong ví dụ này, bạn tạo

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16, một lớp là các lớp con
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Việc thực hiện
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn luôn đặt các giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Nếu bạn tạo một thể hiện là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16 và chuyển một đối số từ khóa cho trình khởi tạo của nó, thì bạn sẽ nhận thấy lớp không gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn để xử lý bài tập. Bạn biết rằng vì khóa
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
22 đã được gán
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

  1. Ngược lại, nếu bạn chạy một hoạt động đăng ký như
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    24, thì bạn sẽ nhận thấy rằng
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    25 được đặt thành
    >>> from collections import defaultdict
    >>> issubclass(defaultdict, dict)
    True
    
    5 thay vì
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    27. Vì vậy, lần này bạn có thể nói rằng các hoạt động đăng ký gọi tùy chỉnh của bạn. Cuối cùng, lưu ý rằng
    >>> a_dict = {}
    >>> try:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... except KeyError:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    2 cũng không gọi
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    18, vì khóa
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    31 của bạn kết thúc với giá trị
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    32.
    calls its
    if key in dct:
        # do something
    
    41, which holds a reference to a
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    54 function.
  2. D.get(key, default) -> D[key] if key in D, else default
    
    64 không kế thừa từ
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 nhưng mô phỏng hành vi của một từ điển tiêu chuẩn. Lớp có một thể hiện nội bộ
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8 được gọi là
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    36, được sử dụng để lưu trữ nội dung của từ điển.
    D.get(key, default) -> D[key] if key in D, else default
    
    64 là một lớp đáng tin cậy hơn khi tạo ra các ánh xạ tùy chỉnh. Nếu bạn sử dụng
    D.get(key, default) -> D[key] if key in D, else default
    
    64, thì bạn sẽ tránh được các vấn đề bạn đã thấy trước đây. Để chứng minh điều này, hãy quay lại mã cho
    D.get(key, default) -> D[key] if key in D, else default
    
    99 và thêm phương thức sau:
    gets called and returns the value that results from calling
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    62 with
    >>> # Correct instantiation
    >>> def_dict = defaultdict(list)  # Pass list to .default_factory
    >>> def_dict['one'] = 1  # Add a key-value pair
    >>> def_dict['missing']  # Access a missing key returns an empty list
    []
    >>> def_dict['another_missing'].append(4)  # Modify a missing key
    >>> def_dict
    defaultdict(, {'one': 1, 'missing': [], 'another_missing': [4]})
    
    8 as an argument.

Tại đây, bạn thêm một

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 tùy chỉnh gọi là siêu lớp
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18, luôn đặt giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Cập nhật mã này trong tập lệnh của bạn
D.get(key, default) -> D[key] if key in D, else default
98 và nhập nó từ một phiên tương tác như sau:

>>>

D.get(key, default) -> D[key] if key in D, else default
2

Trong ví dụ này, bạn tạo

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16, một lớp là các lớp con
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8. Việc thực hiện
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn luôn đặt các giá trị thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5. Nếu bạn tạo một thể hiện là
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
16 và chuyển một đối số từ khóa cho trình khởi tạo của nó, thì bạn sẽ nhận thấy lớp không gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18 của bạn để xử lý bài tập. Bạn biết rằng vì khóa
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
22 đã được gán
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5.

Ngược lại, nếu bạn chạy một hoạt động đăng ký như

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
24, thì bạn sẽ nhận thấy rằng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
25 được đặt thành
>>> from collections import defaultdict
>>> issubclass(defaultdict, dict)
True
5 thay vì
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
27. Vì vậy, lần này bạn có thể nói rằng các hoạt động đăng ký gọi tùy chỉnh của bạn. Cuối cùng, lưu ý rằng
>>> a_dict = {}
>>> try:
...     # Do something with 'key'...
...     a_dict['key']
... except KeyError:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2 cũng không gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
18, vì khóa
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
31 của bạn kết thúc với giá trị
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
32.generate a different default value. For example, suppose you have a
if key in dct:
    # do something
47 of integer numbers, and you need to calculate the cumulative product of each number. Then, you can use a
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 along with
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
54 as follows:

>>>

D.get(key, default) -> D[key] if key in D, else default
3

Tại đây, bạn sử dụng

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
54 để cung cấp giá trị mặc định là
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
30. Với giá trị ban đầu này, bạn có thể tính toán sản phẩm tích lũy của mỗi số trong
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
86. Lưu ý rằng bạn có thể nhận được kết quả tương tự bằng cách sử dụng
if key in dct:
    # do something
70 vì giá trị mặc định được trả về bởi
if key in dct:
    # do something
70 luôn là
>>> a_dict = {}
>>> a_dict['missing_key']
Traceback (most recent call last):
  File "", line 1, in 
    a_dict['missing_key']
KeyError: 'missing_key'
>>> a_dict.setdefault('missing_key', 'default value')
'default value'
>>> a_dict['missing_key']
'default value'
>>> a_dict.setdefault('missing_key', 'another default value')
'default value'
>>> a_dict
{'missing_key': 'default value'}
18, đây không phải là giá trị ban đầu tốt cho các hoạt động nhân bạn cần thực hiện ở đây.

Sử dụng >>> a_dict = {} >>> if 'key' in a_dict: ... # Do something with 'key'... ... a_dict['key'] ... else: ... a_dict['key'] = 'default value' ... >>> a_dict {'key': 'default value'} 55

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
91 là một hàm trả về đối tượng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
92. Khi bạn gọi đối tượng này với các đối số vị trí (
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
93) và đối số từ khóa (
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
94), nó hoạt động tương tự như khi bạn gọi
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
95. Bạn có thể tận dụng hành vi này của
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
96 và sử dụng nó để chuyển các đối số cho
if key in dct:
    # do something
41 trong Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1. Đây là một ví dụ:

>>>

D.get(key, default) -> D[key] if key in D, else default
4

Tại đây, bạn tạo một Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 và sử dụng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
96 để cung cấp một đối số cho
if key in dct:
    # do something
41. Lưu ý rằng bạn cũng có thể cập nhật
if key in dct:
    # do something
41 để sử dụng một đối số khác cho
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
62 có thể gọi được. Loại hành vi này có thể thêm rất nhiều sự linh hoạt cho các đối tượng
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 của bạn.

Sự kết luận

Loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 là cấu trúc dữ liệu giống như từ điển được cung cấp bởi thư viện tiêu chuẩn Python trong một mô-đun có tên
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
2. Lớp kế thừa từ
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
8 và chức năng được thêm vào chính của nó là cung cấp các giá trị mặc định cho các khóa bị thiếu. Trong hướng dẫn này, bạn đã học cách sử dụng loại Python
>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 để xử lý các khóa bị thiếu trong từ điển.

Bây giờ bạn có thể:

  • Tạo và sử dụng Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 để xử lý các phím bị thiếu
    a Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 to handle missing keys
  • Giải quyết các vấn đề trong thế giới thực liên quan đến nhóm, đếm và tích lũy các hoạt động real-world problems related to grouping, counting, and accumulating operations
  • Biết sự khác biệt thực hiện giữa
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 và
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8
    the implementation differences between
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 and
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8
  • Quyết định khi nào và tại sao sử dụng Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 thay vì tiêu chuẩn
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8
    when and why to use a Python
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    1 rather than a standard
    >>> a_dict = {}
    >>> if 'key' in a_dict:
    ...     # Do something with 'key'...
    ...     a_dict['key']
    ... else:
    ...     a_dict['key'] = 'default value'
    ...
    >>> a_dict
    {'key': 'default value'}
    
    8

Loại Python

>>> a_dict = {}
>>> if 'key' in a_dict:
...     # Do something with 'key'...
...     a_dict['key']
... else:
...     a_dict['key'] = 'default value'
...
>>> a_dict
{'key': 'default value'}
1 là một cấu trúc dữ liệu thuận tiện và hiệu quả mà được thiết kế để giúp bạn khi bạn xử lý các khóa bị thiếu trong từ điển. Hãy thử và làm cho mã của bạn nhanh hơn, dễ đọc hơn và nhiều pythonic hơn!

Làm thế nào để bạn kiểm tra xem một chìa khóa có tồn tại trong một con trăn từ điển?

Kiểm tra xem khóa có tồn tại bằng phương thức has_key () bằng phương thức has_key () trả về đúng không nếu một khóa nhất định có sẵn trong từ điển, nếu không, nó sẽ trả về sai. Với phương thức sẵn có has_key (), hãy sử dụng câu lệnh IF để kiểm tra xem khóa có có trong từ điển hay không.using has_key() method Using has_key() method returns true if a given key is available in the dictionary, otherwise, it returns a false. With the Inbuilt method has_key(), use the if statement to check if the key is present in the dictionary or not.

Làm thế nào để bạn kiểm tra xem khóa không tồn tại trong Dict Python?

Làm thế nào để kiểm tra xem một chìa khóa có tồn tại trong từ điển Python không..
has_key. Phương thức HAS_KEY trả về true nếu một khóa nhất định có sẵn trong từ điển; Nếu không, nó trả về sai. Cú pháp. ....
Nếu - trong tuyên bố.Cách tiếp cận này sử dụng tuyên bố IF - trong để kiểm tra xem một khóa nhất định có tồn tại trong từ điển hay không.Cú pháp ..

Làm thế nào để bạn kiểm tra xem một từ điển có chứa một khóa?

Bạn có thể kiểm tra xem một khóa có tồn tại trong từ điển bằng phương thức khóa () và trong toán tử không.Cái này là cái gì?Phương thức khóa () sẽ trả về một danh sách các khóa có sẵn trong từ điển và nếu, trong câu lệnh sẽ kiểm tra xem khóa được truyền có sẵn trong danh sách không.Nếu chìa khóa tồn tại, nó trả về true khác, nó sẽ trả về sai.using the keys() method and IN operator. What is this? The keys() method will return a list of keys available in the dictionary and IF , IN statement will check if the passed key is available in the list. If the key exists, it returns True else, it returns False .

DefaultDict có nhanh hơn Dict không?

Cuối cùng, sử dụng DefaultDict để xử lý các phím bị thiếu có thể nhanh hơn so với sử dụng Dict.using a defaultdict to handle missing keys can be faster than using dict.