Python: Dictionary

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
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; # cp nht giá trcho phn tcó key là 'Age'
dict['School'] = "V1Study"; #Thêm phn tmi nếu key không có sn

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 phn tcó key là 'Name'
print(dict)
dict.clear(); #xóa tt ccác mc trong dict (lệnh del dict sẽ xóa tđin)
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)) #sin 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) #sin ra: {}

copy()

Dùng để copy từ điển.

Ví dụ:

dict1 = {'Name': 'Python', 'Age': 33};
dict2=dict1.copy()
print(dict2) #sin 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' strvNone
print(dict1.get('name','Py'))#nếu không có key là 'name' strv'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'])

» Tiếp: Sự khác nhau giữa sort() và sorted() trong Python
« Trước: Tuple
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!