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
Vì đối với các từ điển lớn, tuyên bố
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 5 is slow is false. I went back and checked the book in which I had read that is better to use 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 7 but 8. It simply says that 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 .. 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:
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 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:
Xử lý các khóa bị thiếu trong từ điểnMộ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ệ 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
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:
Các tài liệu Python giải thích 2 và 3 như sau:
Dưới đây, một ví dụ về cách bạn có thể sử dụng 2 để xử lý các khóa bị thiếu trong từ điển:>>>
Trong mã trên, bạn sử dụng 2 để tạo giá trị mặc định cho 5. Lưu ý rằng từ điển của bạn, 6, hiện có một khóa mới gọi là 5 có giá trị là 8. Chìa khóa này đã không tồn tại trước khi bạn gọi 2. Cuối cùng, nếu bạn gọi 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 3, thì bạn có thể mã hóa một cái gì đó như thế này:>>>
Trong mã trên, bạn sử dụng 2 để tạo giá trị mặc định cho 5. Lưu ý rằng từ điển của bạn, 6, hiện có một khóa mới gọi là 5 có giá trị là 8. Chìa khóa này đã không tồn tại trước khi bạn gọi 2. Cuối cùng, nếu bạn gọi 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 3, thì bạn có thể mã hóa một cái gì đó như thế này:Ở đây, bạn sử dụng 3 để tạo giá trị mặc định cho 5, nhưng lần này, từ điển của bạn vẫn trống. Điều này là do 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à 5, thì bạn có thể giả sử rằng 3 hoạt động như thế này:>>>
Trong mã trên, bạn sử dụng 2 để tạo giá trị mặc định cho 5. Lưu ý rằng từ điển của bạn, 6, hiện có một khóa mới gọi là 5 có giá trị là 8. Chìa khóa này đã không tồn tại trước khi bạn gọi 2. Cuối cùng, nếu bạn gọi 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 3, thì bạn có thể mã hóa một cái gì đó như thế này:>>>
Trong mã trên, bạn sử dụng 2 để tạo giá trị mặc định cho 5. Lưu ý rằng từ điển của bạn, 6, hiện có một khóa mới gọi là 5 có giá trị là 8. Chìa khóa này đã không tồn tại trước khi bạn gọi 2. Cuối cùng, nếu bạn gọi 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 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( |
Phòng | Tên nhân viên |
---|---|
Việc bán hàng | John Doe |
Việc bán hàng | John Doe |
Martin Smith | Kế toán |
Jane Doe | Tiếp thị |
Jane Doe | Tiếp thị |
Elizabeth Smith | Elizabeth Smith |
Adam Doe
if key in dct:
# do something
1…
if key in dct:
# do something
2Vớ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
3Trong 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
4Mã 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
5Trong 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
6Tạ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
7Trong 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
8Trong 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ẩm | Tháng bảy | Tháng tám | Tháng 9 |
---|---|---|---|
Sách | 1250.00 | 1300.00 | 1420.00 |
Hướng dẫn | 560.00 | 630.00 | 750.00 |
Khóa học | 2500.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
9Vớ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
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.>>> 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 dòng 3, bạn tạo một đối tượng
1 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'}
41 được đặt thànhif key in dct: # do something
71., you create aif key in dct: # do something
1 object 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'}
41 set toif key in dct: # do something
71.if key in dct: # do something
- Trong dòng 4, bạn xác định vòng lặp
97 để lặp lại thông qua các mục củaif key in dct: # do something
47., you define a>>> a_dict = {} >>> a_dict['missing_key'] Traceback (most recent call last): File "
" , line 1, ina_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'}
97 loop to iterate through the items ofif key in dct: # do something
47.>>> a_dict = {} >>> a_dict['missing_key'] Traceback (most recent call last): File "
" , line 1, ina_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 dòng 5, bạn sử dụng một hoạt động gán tăng cường (
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, ina_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.>>> a_dict = {} >>> a_dict['missing_key'] Traceback (most recent call last): File "
" , line 1, ina_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'}
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'}
1Bâ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'}
2Trong 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ả |
---|---|
63 | Cung cấp hỗ trợ cho 64 |
41 | Giữ được gọi là 40 để tự động cung cấp các giá trị mặc định cho các khóa bị thiếu |
67 | Được gọi khi 68 có thể tìm thấy 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'}
3Trong 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'}
4Trong 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'}
5Trong 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'}
6Trong 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'}
7Trong đ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'}
8Trong đ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'}
9Trong đ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
{}
0Trong 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'}
04Như 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
{}
2Mặ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
{}
4Cuố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.Ngoài ra, bạn cần xem xét rằng việc tạo
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.>>> 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'}
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
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.>>> 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'}
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
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.>>> 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'}
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
41 có phải làif key in dct: # do something
5 không. Nếu vậy, sau đó bạn tăng>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
0 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'}
0 như một đối số., you test to see if>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
41 isif key in dct: # do something
5. If so, then you raise a>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
0 with the>>> 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 as an argument.>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
- Trong dòng 4 và 5, bạn kiểm tra xem
0 không có trong từ điển. Nếu nó không, thì bạn gọi>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
41 và gán giá trị trả về của nó choif key in dct: # do something
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>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
41 and assign its return value to theif key in dct: # do something
0.>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
- Trong dòng 6, bạn trả lại
0 như mong đợi., you return the>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
0 as expected.>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
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
2 để có quyền truy cập 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'}
64., you importD.get(key, default) -> D[key] if key in D, else default
2 to get access to>>> 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'}
64.D.get(key, default) -> D[key] if key in D, else default
Trong dòng 3, bạn tạo một lớp các lớp con
64., you create a class that subclassesD.get(key, default) -> D[key] if key in D, else default
64.D.get(key, default) -> D[key] if key in D, else default
Trong dòng 4, bạn xác định trình khởi tạo lớp
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ằngD.get(key, default) -> D[key] if key in D, else default
67 mặc định làD.get(key, default) -> D[key] if key in D, else default
5, giống như trong>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
1. Bạn cũng cầ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'}
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ủaD.get(key, default) -> D[key] if key in D, else default
8 thông thường., you define the class initializer>>> 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'}
66. This method takes an argument calledD.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 thatD.get(key, default) -> D[key] if key in D, else default
67 defaults toD.get(key, default) -> D[key] if key in D, else default
5, just like in a>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
1. You also need the>>> 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'}
71 andD.get(key, default) -> D[key] if key in D, else default
72 for emulating the normal behavior of a regularD.get(key, default) -> D[key] if key in D, else default
8.>>> 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 dòng 5, bạn gọi là siêu lớp
66. Điều này có nghĩa là bạn sẽ gọiD.get(key, default) -> D[key] if key in D, else default
75 và vượt quaD.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 superclassD.get(key, default) -> D[key] if key in D, else default
66. This means that you’re callingD.get(key, default) -> D[key] if key in D, else default
75 and passingD.get(key, default) -> D[key] if key in D, else default
71 andD.get(key, default) -> D[key] if key in D, else default
72 to it.D.get(key, default) -> D[key] if key in D, else default
Trong dòng 6, trước tiên bạn kiểm tra xem
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ụngD.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ếuD.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ọiD.get(key, default) -> D[key] if key in D, else default
07 nếu bạn cần tạo một mặc định>>> a_dict = {} >>> a_dict.get('missing_key', 'default value') 'default value' >>> a_dict {}
37 cho bất kỳif key in dct: # do something
0 bị thiếu. Sau đó, bạn kiểm tra xem>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
41 không phải làif key in dct: # do something
5., you first check if>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
67 is a valid callable object. In this case, you useD.get(key, default) -> D[key] if key in D, else default
79, which is a built-in function that returnsD.get(key, default) -> D[key] if key in D, else default
80 ifD.get(key, default) -> D[key] if key in D, else default
81 appears to be a callable and otherwise returnsD.get(key, default) -> D[key] if key in D, else default
82. This check ensures that you can callD.get(key, default) -> D[key] if key in D, else default
07 if you need to generate a default>>> a_dict = {} >>> a_dict.get('missing_key', 'default value') 'default value' >>> a_dict {}
37 for any missingif key in dct: # do something
0. Then, you check if>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
41 is notif key in dct: # do something
5.>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
Trong dòng 7, bạn tăng
57 giống như mộtif key in dct: # do something
8 thông thường sẽ làm nế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'}
67 làD.get(key, default) -> D[key] if key in D, else default
5., you raise a>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
57 just like a regularif key in dct: # do something
8 would do if>>> 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'}
67 isD.get(key, default) -> D[key] if key in D, else default
5.>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
Trong dòng 8, bạn khởi tạo
41., you initializeif key in dct: # do something
41.if key in dct: # do something
Trong dòng 10, bạn xác định
40, được thực hiện như bạn đã thấy trước đây. Hãy nhớ lại rằngif key in dct: # do something
40 được tự động gọi bởiif key in dct: # do something
68 khi một>>> a_dict = {} >>> a_dict['missing_key'] Traceback (most recent call last): File "
" , line 1, ina_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 nhất định không nằm trong từ điển., you define>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
40, which is implemented as you saw before. Recall thatif key in dct: # do something
40 is automatically called byif key in dct: # do something
68 when a given>>> a_dict = {} >>> a_dict['missing_key'] Traceback (most recent call last): File "
" , line 1, ina_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 is not in a dictionary.>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
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
{}
8Trong 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.
64 không kế thừa từ D.get(key, default) -> D[key] if key in D, else default
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. >>> 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'}
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 D.get(key, default) -> D[key] if key in D, else default
>>> 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
{}
9Tạ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
0Trong 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:
54>>> 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'}
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
1Trong 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ư
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>>> 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'}
5 thay vì>>> from collections import defaultdict >>> issubclass(defaultdict, dict) True
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 = {} >>> 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ũng không gọi>>> a_dict = {} >>> try: ... # Do something with 'key'... ... a_dict['key'] ... except KeyError: ... 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>>> 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'}
41, which holds a reference to aif key in dct: # do something
54 function.>>> 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'}
64 không kế thừa từD.get(key, default) -> D[key] if key in D, else default
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.>>> 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'}
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ụngD.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ã choD.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 callingD.get(key, default) -> D[key] if key in D, else default
62 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'}
8 as an argument.>>> # 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]})
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
2Trong 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
3Tạ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
4Tạ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
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>>> 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'}
- 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
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>>> 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'}
- Quyết định khi nào và tại sao sử dụng Python
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>>> 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'}
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!