Python: Dictionary
Giải phóng thời gian, khai phóng năng lực
Dictionary (Từ điển) trong Python có đặc điểm mỗi khóa (key) được phân biệt với giá trị của nó bằng dấu hai chấm (:), các mục được phân tách bằng dấu phẩy và toàn bộ khóa được đặt trong dấu ngoặc xoắn. Từ điển trống được thể hiện bằng hai dấu ngoặc xoắn bên trong không chứa gì, như sau: {}.
Bạn phải đảm bảo các khóa là duy nhất trong từ điển, còn giá trị có thể là giống nhau. Các giá trị của từ điển có thể thuộc bất kỳ kiểu nào, nhưng các khóa phải thuộc kiểu dữ liệu bất biến như chuỗi, số hoặc bộ giá trị.
Truy cập các giá trị của từ điển
Để truy cập các phần tử của từ điển, bạn có thể sử dụng dấu ngoặc vuông quen thuộc cùng với khóa để lấy giá trị của nó. Sau đây là một ví dụ đơn giản:
dict = {'Name':'Zara', 'Age':7, 'Class':'First'} print("dict['Name']:", dict['Name']) print("dict['Age']:", dict['Age'])
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
dict['Name']: Zara
dict['Age']: 7
Nếu ta cố gắng truy cập vào một mục dữ liệu bằng key không có sẵn thì sẽ gặp lỗi như sau:
dict = {'Name':'Zara', 'Age':7, 'Class':'First'} print("dict['Alice']:", dict['Alice'])
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Traceback (most recent call last):
File "E:/Courses/Python/demo dictionary.py", line 2, in <module>
print("dict['Alice']:", dict['Alice'])
KeyError: 'Alice'
Cập nhật từ điển
Bạn có thể cập nhật từ điển bằng cách thêm mục nhập mới hoặc cặp khóa-giá trị, sửa đổi mục nhập hiện có hoặc xóa mục nhập hiện có như được minh họa bên dưới trong ví dụ đơn giản:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} dict['Age'] = 8; # cập nhật giá trị cho phần tử có key là 'Age' dict['School'] = "V1Study"; #Thêm phần tử mới nếu key không có sẵn print("dict['Age']:", dict['Age']); print("dict['School']:", dict['School'])
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
dict['Age']: 8
dict['School']: V1Study
Xóa các thành phần từ điển
Ta có thể xóa từng phần tử từ điển hoặc xóa toàn bộ dữ liệu từ điển. Ta cũng có thể xóa toàn bộ từ điển chỉ trong một thao tác.
Để xóa toàn bộ từ điển ta chỉ cần sử dụng câu lệnh del. Sau đây là một ví dụ đơn giản:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First', 'School': 'V1Study'} del dict['Name']; #xóa phần tử có key là 'Name' print(dict) dict.clear(); #xóa tất cả các mục trong dict (lệnh del dict sẽ xóa từ điển) print("dict['Age']:", dict['Age']) print("dict['School']:", dict['School'])
Điều này tạo ra kết quả như sau với lưu ý rằng do phương thức clear() đã xóa toàn bộ dữ liệu của từ điển:
{'Age': 7, 'Class': 'First', 'School': 'V1Study'}
Traceback (most recent call last):
File "E:/Courses/Python/demo dictionary.py", line 5, in <module>
print("dict['Age']:", dict['Age'])
KeyError: 'Age'
Thuộc tính của khóa từ điển
Các giá trị của từ điển không có tính hạn chế, chúng có thể là bất kỳ đối tượng Python tùy ý nào, đối tượng chuẩn hoặc đối tượng do người dùng định nghĩa. Tuy nhiên, đối với các khóa của từ điển thì lại có một số hạn chế.
Có hai điểm quan trọng cần nhớ về khóa từ điển:
(a) Không được có khóa (key) trùng nhau trong từ điển. Khi gặp các khóa trùng lặp trong quá trình thao tác thì khóa trùng lặp nằm sau sẽ được sử dụng. Ví dụ:
dict = {'Name': 'HTML5', 'Age': 8, 'Name': 'C++', 'School': 'V1Study'} print(dict['Name'])
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
C++
(b) Các khóa phải là bất biến. Có nghĩa là bạn có thể sử dụng chuỗi, số hoặc tuple làm khóa từ điển nhưng như list chẳng hạn thì không được phép. Sau đây là một ví dụ đơn giản:
dict = {['Name']: 'HTML5', 'Age': 8, 'School': 'V1Study'} print(dict['Name'])
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Traceback (most recent call last):
File "E:/Courses/Python/demo dictionary.py", line 1, in <module>
dict = {['Name']: 'HTML5', 'Age': 8, 'School': 'V1Study'}
TypeError: unhashable type: 'list'
Các hàm để thao tác với từ điển
Python bao gồm các hàm từ điển sau:
len(dict1)
Hàm này dùng để lấy kích thước (số phần tử) của từ điển.
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; print(len(dict1)) #Sẽ in ra: 2
type(dict1)
Hàm này dùng để lấy kiểu dữ liệu của đối số. Nếu dict1 là từ điển thì sẽ trả về kiểu từ điển.
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; print(type(dict1)) #sẽ in ra: <class 'dict'>
Các phương thức để thao tác với từ điển
clear()
Xóa tất cả các phần tử khỏi từ điển.
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; dict1.clear() print(dict1) #sẽ in ra: {}
copy()
Dùng để copy từ điển.
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; dict2=dict1.copy() print(dict2) #sẽ in ra: {'Name': 'Python', 'Age': 33}
fromkeys()
Dùng để tạo một từ điển mới với các key được lấy từ từ điển hiện thời.
dict1 = {'Name': 'Python', 'Age': 33}; dict2=dict.fromkeys(dict1) print(dict2) dict2=dict.fromkeys(dict1,123) print(dict2)
Kết quả:
{'Name': None, 'Age': None}
{'Name': 123, 'Age': 123}
get()
Phương thức này dùng để lấy giá trị của phần tử theo key.
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; print(dict1.get('name'))#nếu không có key là 'name' sẽ trả về None print(dict1.get('name','Py'))#nếu không có key là 'name' sẽ trả về 'Py'
Kết quả:
None
Py
items()
Trả về các cặp key/value của từ điển:
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; print(dict1.items())
Kết quả:
dict_items([('Name', 'Python'), ('Age', 33)])
keys()
Phương thức này trả về các key của tử điển.
Ví dụ:
dict1 = {'Name': 'Python', 'Age': 33}; print(dict1.keys())
Kết quả:
dict_keys(['Name', 'Age'])
setdefault(key,value)
Dùng để thiết lập giá trị mặc định là value cho phần tử có khóa là key.
+ Nếu key không có trong từ điển thì:
- Nếu có value thì sẽ tạo một phần tử mới cho từ điển với khóa là key và giá trị là value.
- Nếu không có value thì sẽ tạo một phần tử mới cho từ điển với khóa là key và giá trị là None.
+ Nếu key có trong từ điển thì không có gì thay đổi đối với từ điển
Ví dụ:
dict1 = {'Name':None, 'Age': 33} dict1.setdefault('Location','VietNam') print(dict1) dict1.setdefault('School') print(dict1) dict1.setdefault('Name','Python') print(dict1)
Kết quả:
{'Name': None, 'Age': 33, 'Location': 'VietNam'}
{'Name': None, 'Age': 33, 'Location': 'VietNam', 'School': None}
{'Name': None, 'Age': 33, 'Location': 'VietNam', 'School': None}
update(dict2)
Dùng để đưa thêm các phần tử của từ điển dict2 vào từ điển hiện thời.
Ví dụ:
dict1 = {'Name':'PHP', 'Age': 5} dict2 = {'School':'V1Study', 'Location': 'VietNam'} print(dict1) dict1.update(dict2) print(dict1)
Kết quả:
{'Name': 'PHP', 'Age': 5}
{'Name': 'PHP', 'Age': 5, 'School': 'V1Study', 'Location': 'VietNam'}
values()
Phương thức này dùng để lấy các giá trị (value) của từ điển.
Ví dụ:
dict1 = {'Name':'PHP', 'Age': 5, 'School':'V1Study', 'Location': 'VietNam'} print(dict1.values())
Kết quả:
dict_values(['PHP', 5, 'V1Study', 'VietNam'])
Giải phóng thời gian, khai phóng năng lực