Từ điển trong các ví dụ python là gì?

Chúng ta có thể chuyển khái niệm từ điển từ đời thực sang từ điển trong Python. Xét cho cùng, từ điển là một đối tượng chứa các từ và mỗi từ có một nghĩa liên quan đến nó. Thực hiện song song, chúng ta sẽ nói rằng trong Python, từ điển cũng là một đối tượng được lập chỉ mục bởi các khóa [từ] có giá trị [ý nghĩa] liên quan.

Tương tự từ điển trong Python

Từ điển trong Python có các đặc điểm sau

  • Họ duy trì thứ tự mà các phím được chèn.

  • Chúng có thể thay đổi, cho phép chúng thêm, xóa và sửa đổi các phần tử của chúng.

  • Khóa phải là duy nhất. Các chuỗi thường được sử dụng làm khóa, nhưng thực tế có thể là bất kỳ loại dữ liệu bất biến nào. số nguyên, số float, bộ dữ liệu [trong số những số khác]

  • Họ có quyền truy cập rất nhanh vào các yếu tố của mình, do cách chúng được triển khai nội bộ.

Ghi chú

Trong các ngôn ngữ lập trình khác, từ điển được gọi là mảng kết hợp, "băm" hoặc "bản đồ băm".

tạo từ điển

Để tạo một từ điển, chúng tôi sử dụng dấu ngoặc nhọn

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
8 các nhiệm vụ xung quanh
>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
9 được phân tách bằng dấu phẩy. Hãy xem một số ví dụ về từ điển

>>> empty_dict = {}

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> population_can = {
..     2015: 2_135_209,
..     2016: 2_154_924,
..     2017: 2_177_048,
..     2018: 2_206_901,
..     2019: 2_220_270
.. }

Trong đoạn mã trên, chúng ta có thể thấy việc tạo một từ điển trống, một từ điển khác trong đó các khóa và giá trị của nó là các chuỗi văn bản và một từ khác trong đó các khóa và giá trị là các giá trị nguyên.

Bước qua Python Tutor

báo trước

Mặc dù nó được cho phép, KHÔNG BAO GIỜ gọi

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
0 trên một biến vì bạn sẽ phá hủy chức năng cho phép chúng tôi tạo từ điển. Và cũng không sử dụng các tên có nguồn gốc như
>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
1 hoặc
>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
2 vì chúng không phải là tên đại diện

Bài tập

Tạo một từ điển với tên của 5 người trong gia đình bạn và tuổi của họ.

chuyển đổi

Để chuyển đổi các loại dữ liệu khác thành từ điển ta có thể sử dụng hàm

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
3

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}

Ghi chú

Nếu chúng ta quan sát kỹ, bất kỳ iterable nào có cấu trúc bên trong gồm 2 phần tử đều có khả năng được chuyển đổi thành từ điển thông qua chức năng

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
3

từ điển rỗng

Có một cách cụ thể để sử dụng

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
3 và đó là không chuyển bất kỳ đối số nào cho nó. Trong trường hợp này, chúng tôi sẽ muốn chuyển đổi "trống" thành một từ điển, nhờ đó chúng tôi sẽ có được một từ điển trống

>>> dict[]
{}

Bí quyết, Thuật, mẹo

Để tạo một từ điển trống,

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
_8 thường được khuyên dùng hơn
>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
3, không chỉ vì nó giống Pythonic hơn mà còn vì nó [trung bình] có hiệu suất thời gian chạy tốt hơn

Sáng tạo với
>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
_3

Cũng có thể dùng hàm

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
3 để tạo từ điển và không phải dùng dấu ngoặc và ngoặc kép

Giả sử chúng ta muốn chuyển bảng sau thành một từ điển

Thuộc tính

Đáng giá

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
0

chàng

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
1

Van Rossum

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
2

người tạo python

Sử dụng cấu trúc

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax
0, chúng ta có thể truyền khóa và giá trị làm đối số cho hàm

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}

Hạn chế của phương pháp này là các khóa phải là mã định danh hợp lệ trong Python. Ví dụ, khoảng cách không được phép

>>> person = dict[
..     name='Guido van Rossum',
..     date of birth='31/01/1956'
  File "", line 3
    date of birth='31/01/1956'
          ^
SyntaxError: invalid syntax

Trình độ trung cấp

Có thể tạo một từ điển bằng cách chỉ định các khóa của nó và một giá trị "đệm" duy nhất

________mười lăm_______

Ghi chú

Việc chuyển bất kỳ "có thể lặp lại" nào làm tham chiếu đến các khóa là hợp lệ

hoạt động từ điển

lấy một món đồ

Để lấy một phần tử từ từ điển, chỉ cần viết khóa trong ngoặc vuông. hãy xem một ví dụ

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'

Nếu chúng tôi cố gắng truy cập một khóa không tồn tại, chúng tôi sẽ gặp lỗi

>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'

Sử dụng
>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
4

Có một chức năng rất hữu ích để "khắc phục" các lỗi truy cập có thể xảy ra do không tồn tại các khóa. Đó là

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
4 và hành vi của nó như sau

  1. Nếu khóa chúng tôi đang tìm kiếm tồn tại, nó sẽ trả về giá trị của nó

  2. Nếu khóa chúng tôi đang tìm kiếm không tồn tại, nó sẽ trả về

    >>> dict.fromkeys['aeiou', 0]
    {'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
    
    6 trừ khi chúng tôi chỉ ra một giá trị mặc định khác, nhưng trong cả hai trường hợp, chúng tôi sẽ không gặp lỗi

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

>>> rae
{'bifronte': 'De dos frentes o dos caras',
 'anarcoide': 'Que tiende al desorden',
 'montuvio': 'Campesino de la costa'}

>>> rae.get['bifronte']
'De dos frentes o dos caras'

>>> rae.get['programación']

>>> rae.get['programación', 'No disponible']
'No disponible'

dòng 6

Tương đương với

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
7

dòng 9

Khóa tìm kiếm không tồn tại và chúng tôi nhận được

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
6.

dòng 11

Khóa đã tìm kiếm không tồn tại và nó trả về giá trị mà chúng tôi đã cung cấp theo mặc định

Thêm hoặc sửa đổi một phần tử

Để thêm một phần tử vào từ điển, chỉ cần tham khảo khóa và gán cho nó một giá trị

  • Nếu khóa đã tồn tại trong từ điển, giá trị hiện có sẽ được thay thế bằng giá trị mới

  • Nếu khóa mới, nó sẽ được thêm vào từ điển với giá trị của nó. Chúng tôi sẽ không gặp lỗi không giống như danh sách

Chúng tôi bắt đầu từ điển sau đây để minh họa cho những hành động này

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
0

Chúng tôi sẽ thêm từ truy tố vào từ điển của Học viện Ngôn ngữ Hoàng gia

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
1

Bây giờ giả sử rằng chúng ta muốn sửa đổi ý nghĩa của từ công tố cho một ý nghĩa khác

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
2

tạo từ trống

Một cách rất phổ biến để làm việc với từ điển là sử dụng mẫu tạo từ mẫu trống và thêm từng phần tử một.

Giả sử một ví dụ mà chúng tôi muốn xây dựng một từ điển trong đó các khóa là các chữ cái nguyên âm và các giá trị là vị trí của chúng

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
3

Ghi chú

Chúng tôi đã sử dụng chức năng

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
9 mà chúng tôi đã thấy cho các danh sách trong phần.

Bài tập

chim sẻ. các thành phố

quyền sở hữu khóa

Cách Pythonic để kiểm tra sự tồn tại của khóa bên trong từ điển là sử dụng toán tử

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
0

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
4

Ghi chú

Toán tử

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
0 luôn trả về giá trị boolean, nghĩa là đúng hoặc sai

Bài tập

chim sẻ. đếm_chữ cái

nhận tất cả các mặt hàng

Python cung cấp các cơ chế để lấy tất cả các thành phần của từ điển. Chúng ta bắt đầu từ điển sau

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
5

Nhận tất cả các khóa từ một từ điển

Sử dụng chức năng

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
2

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
6

Nhận tất cả các giá trị từ một từ điển

Sử dụng chức năng

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
3

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
7

Nhận tất cả các cặp "khóa-giá trị" từ từ điển

Sử dụng chức năng

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
4

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
8

Ghi chú

Đối với trường hợp sau, cần lưu ý rằng "các mục" được trả về dưới dạng danh sách các bộ, trong đó mỗi bộ có hai phần tử. cái đầu tiên đại diện cho khóa và cái thứ hai đại diện cho giá trị

độ dài của từ điển

Chúng ta có thể biết số phần tử ["key-value"] mà một từ điển có với hàm

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
5

>>> # Diccionario a partir de una lista de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una tupla de cadenas de texto
>>> dict[['a1', 'b2']]
{'a': '1', 'b': '2'}

>>> # Diccionario a partir de una lista de listas
>>> dict[[['a', 1], ['b', 2]]]
{'a': 1, 'b': 2}
9

Lặp lại từ điển

Dựa trên , Python cung cấp cho chúng ta ba cách để lặp qua từ điển

Lặp lại các phím

>>> dict[]
{}
0

Lặp lại các giá trị

>>> dict[]
{}
1

Lặp lại "khóa-giá trị"

>>> dict[]
{}
2

Ghi chú

Trong trường hợp sau, hãy nhớ sử dụng chuỗi để định dạng

Bài tập

chim sẻ. avg_population

Kết hợp từ điển

Đưa ra hai [hoặc nhiều] từ điển, có thể "xáo trộn" chúng để có được sự kết hợp của chúng. Sự kết hợp này dựa trên hai tiền đề

  1. Nếu khóa không tồn tại, nó sẽ được thêm vào với giá trị của nó

  2. Nếu khóa đã tồn tại, nó sẽ được thêm vào với giá trị của từ điển "cuối cùng" trong hỗn hợp.

Python cung cấp hai cơ chế để thực hiện sự kết hợp này. Hãy bắt đầu từ những từ điển sau đây để làm gương cho việc sử dụng nó

>>> dict[]
{}
3

Không sửa đổi từ điển gốc

Thông qua nhà điều hành

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
6

>>> dict[]
{}
4

Kể từ Python 3. 9 chúng ta có thể sử dụng toán tử

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
7 để kết hợp hai từ điển

>>> dict[]
{}
5

Sửa đổi từ điển gốc

Sử dụng chức năng

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
8

>>> dict[]
{}
6

Ghi chú

Hãy tính đến thứ tự mà chúng tôi chỉ định từ điển tại thời điểm kết hợp [kết hợp] của chúng có liên quan trong kết quả cuối cùng. Trong trường hợp này, thứ tự của các yếu tố làm thay đổi sản phẩm.

xóa mục

Python cung cấp cho chúng ta ít nhất ba cách để xóa các mục trong từ điển.

bằng chìa khóa của bạn

Thông qua câu

>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
9

>>> dict[]
{}
7

Bằng khóa của bạn [có trích xuất]

Sử dụng hàm

>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'
0, chúng ta có thể trích xuất một phần tử từ từ điển bằng khóa của nó. Nó sẽ là sự kết hợp của
>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
4 +
>>> rae = {
..     'bifronte': 'De dos frentes o dos caras',
..     'anarcoide': 'Que tiende al desorden',
..     'montuvio': 'Campesino de la costa'
.. }

>>> rae['anarcoide']
'Que tiende al desorden'
9

>>> dict[]
{}
8

báo trước

Nếu khóa mà chúng tôi dự định trích xuất bằng

>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'
0 không tồn tại, chúng tôi sẽ gặp lỗi

Hoàn thành xóa từ điển
  1. Sử dụng chức năng

    >>> rae['acceso']
    Traceback [most recent call last]:
      File "", line 1, in 
    KeyError: 'acceso'
    
    4

    >>> dict[]
    {}
    
    9

  2. "Đặt lại" từ điển thành trống với

    >>> person = dict[
    ..     name='Guido',
    ..     surname='Van Rossum',
    ..     job='Python creator'
    .. ]
    
    >>> person
    {'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
    
    8

    >>> person = dict[
    ..     name='Guido',
    ..     surname='Van Rossum',
    ..     job='Python creator'
    .. ]
    
    >>> person
    {'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
    
    0

Ghi chú

Sự khác biệt giữa hai phương pháp liên quan đến các vấn đề về hiệu năng và quản lý bộ nhớ trong.

Cẩn thận với các bản sao

Trình độ trung cấp

Như đã xảy ra với , nếu chúng ta thực hiện một thay đổi trong từ điển, nó sẽ được phản ánh trong tất cả các biến liên quan đến nó. Điều này bắt nguồn từ tài sản của nó là có thể thay đổi. Hãy xem một ví dụ cụ thể

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
1

Một giải pháp khả thi cho vấn đề này là tạo một "bản cứng". Đối với Python này cung cấp chức năng

>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'
6

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
2

Bí quyết, Thuật, mẹo

Trong trường hợp chúng ta đang làm việc với các từ điển có chứa các thành phần có thể thay đổi, chúng ta phải sử dụng hàm

>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'
7 trong mô-đun
>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'
8 của thư viện chuẩn

Từ điển theo cách hiểu

Trình độ trung cấp

Tương tự như how , chúng ta có thể áp dụng phương pháp này cho từ điển sử dụng dấu ngoặc nhọn

>>> rae['acceso']
Traceback [most recent call last]:
  File "", line 1, in 
KeyError: 'acceso'
9
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
0

Hãy xem một ví dụ trong đó chúng tôi tạo một từ điển bằng cách hiểu trong đó các khóa là các từ và các giá trị là độ dài của chúng.

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
3

Chúng ta cũng có thể áp dụng điều kiện cho những cách hiểu này. Tiếp tục với ví dụ trước, chúng ta có thể kết hợp hạn chế chỉ bao gồm các từ không bắt đầu bằng nguyên âm

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
4

Ghi chú

Bạn có thể tham khảo PEP-274 để xem thêm các ví dụ về từ điển đọc hiểu

Bài tập

chim sẻ. split_marks

đối tượng có thể băm

Trình độ cao

Hạn chế duy nhất mà các khóa của từ điển phải đáp ứng là "có thể băm". Một đối tượng có thể băm được nếu nó có thể được gán một giá trị băm không thay đổi trong quá trình thực thi trong suốt thời gian tồn tại của nó.

Để tìm hàm băm của một đối tượng, Python sử dụng hàm

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
1, trả về một số nguyên và được sử dụng để lập chỉ mục bảng băm được duy trì nội bộ.

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
5

Đối với một đối tượng có thể băm được, nó phải là bất biến.

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
6

Ghi chú

Từ những điều trên, có thể suy ra rằng các khóa của từ điển, vì chúng phải là "có thể băm", chỉ có thể là các đối tượng bất biến.

Chức năng tích hợp sẵn

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
1 thực sự thực hiện cuộc gọi đến phương thức ma thuật
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
3 của đối tượng được đề cập

>>> person = dict[
..     name='Guido',
..     surname='Van Rossum',
..     job='Python creator'
.. ]

>>> person
{'name': 'Guido', 'surname': 'Van Rossum', 'job': 'Python creator'}
7

LUYỆN TẬP

  1. chim sẻ. nhóm_từ

  2. chim sẻ. same_dict_values

  3. chim sẻ. build_super_dict

  4. chim sẻ. clear_dict_values

  5. chim sẻ. fix_keys

  6. chim sẻ. order_stock

  7. chim sẻ. Inventory_moves

  8. chim sẻ. hợp nhất_dicts

  9. chim sẻ. sort_dict

MỞ RỘNG KIẾN THỨC

  • Sử dụng Loại mặc định của Python để xử lý các khóa bị thiếu

  • Lặp từ điển Python. Mẹo & thủ thuật nâng cao

  • Ngoại lệ KeyError của Python và cách xử lý chúng

  • Từ điển trong Python

  • Cách lặp qua từ điển trong Python

  • Sao chép nông và sâu các đối tượng Python

Ảnh bìa gốc của Aaron Burden trên Bapt

Mặc dù trước đây Python không yêu cầu các khóa từ điển để duy trì thứ tự chèn của chúng, kể từ Python 3. 7 hành vi này đã được thay đổi và thứ tự chèn của các phím được đảm bảo như một phần chính thức của đặc tả ngôn ngữ

Xem phân tích về độ phức tạp và hiệu suất của các cấu trúc dữ liệu khác nhau trong CPython

>>> dict.fromkeys['aeiou', 0]
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
6 là từ khóa Python cho "không có gì". Thêm thông tin trên trang web này

Chúng tôi thực sự không thấy gì trong bảng điều khiển python vì biểu diễn chuỗi trống

Trong trường hợp này, "cuối cùng" dùng để chỉ từ điển xa nhất về bên phải trong biểu thức

Từ điển trong Python là gì?

Từ điển trong Python là một cấu trúc dữ liệu cho phép bạn lưu trữ bất kỳ loại thông tin nào, từ chuỗi văn bản hoặc ký tự đến số nguyên, số thập phân, danh sách và thậm chí cả các từ điển khác .

Danh sách và từ điển trong Python là gì?

Từ điển Python là một phần của cái được gọi là cấu trúc dữ liệu mà Python cung cấp cho chúng ta . Cần lưu ý rằng, nếu bạn đã lập trình bằng các ngôn ngữ khác, từ điển không gì khác hơn là danh sách kết hợp hoặc danh sách có khóa, trong đó mỗi khóa là một mã định danh duy nhất của một vị trí trong danh sách.

Từ điển là gì và đặc điểm của nó là gì?

Từ điển là công việc mà bạn có thể tra từ hoặc thuật ngữ và cung cấp ý nghĩa, định nghĩa, từ nguyên, chính tả, cách phát âm cố định, tách âm tiết và dạng ngữ pháp. La información que proporciona varía según el tipo de diccionario del que se trata.

Các phương thức từ điển trong Python là gì?

Danh sách các phương thức của lớp dict

Chủ Đề