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 syntax0 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 syntax1 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 syntax2 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 syntax3
>>> # 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 syntax3
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 syntax3 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 syntax3, 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 syntax3 để 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 syntax0, 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
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ó
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}7dò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}5Nhậ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}6Nhậ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}7Nhậ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 đề
Nếu khóa không tồn tại, nó sẽ được thêm vào với giá trị của nó
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[] {}3Khô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[] {}5Sử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ạnThô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[] {}7Bằ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ỗiHoàn thành xóa từ điển
Sử dụng chức năng
>>> rae['acceso'] Traceback [most recent call last]: File "", line 1, in KeyError: 'acceso'
4>>> dict[] {}
9"Đặ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 120
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 121, 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 121 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 123 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
chim sẻ. nhóm_từ
chim sẻ. same_dict_values
chim sẻ. build_super_dict
chim sẻ. clear_dict_values
chim sẻ. fix_keys
chim sẻ. order_stock
chim sẻ. Inventory_moves
chim sẻ. hợp nhất_dicts
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