Kiểu dữ liệu Dictionary trong Python là một tập hợp các cặp key-value không có thứ tự, có thể thay đổi và lập chỉ mục (truy cập phần tử theo chỉ mục). Dictionary được khởi tạo với các dấu ngoặc nhọn {} và chúng có các khóa và giá trị (key-value). Mỗi cặp key-value được xem như là một item. Key mà đã truyền cho item đó phải là duy nhất, trong khi đó value có thể là bất kỳ kiểu giá trị nào. Key phải là một kiểu dữ liệu không thay đổi (immutable) như chuỗi, số hoặc tuple.
Key và value được phân biệt riêng rẽ bởi một dấu hai chấm (:). Các item phân biệt nhau bởi một dấu phảy (,). Các item khác nhau được bao quanh bên trong một cặp dấu ngoặc móc đơn tạo nên một Dictionary trong Python
Ví dụ:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } print(dictCar)
Kết quả:
{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}
Nội dung chính
- Truy cập các item của Dictionary trong Python
- Thay đổi giá trị của một Dictionary trong Python
- Duyệt các item của Dictionary trong Python
- Kiểm tra nếu key tồn tại
- Độ dài của một Dictionary trong Python
- Thêm các item vào Dictionary
- Xóa item của Dictionary
- Copy Dictionary trong Python
- Dictionary lồng nhau trong Python
- Constructor dict() trong Python
- Các hàm và phương thức đã được xây dựng sẵn cho Dictionary trong Python
Truy cập các item của Dictionary trong Python
Bạn có thể truy cập các item của Dictionary bằng cách sử dụng khóa của nó, bên trong dấu ngoặc vuông, ví dụ:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } print(dictCar["model"])
Kết quả:
Honda Civic
Ngoài ra bạn cũng có thể sử dụng hàm get() để truy cập item của Dictionary trong Python như trong ví dụ sau:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } print(dictCar.get("model"))
Kết quả:
Honda Civic
Thay đổi giá trị của một Dictionary trong Python
Bạn có thể thay đổi giá trị của một item cụ thể bằng khóa của nó:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dictCar["year"] = 2020 print(dictCar)
Kết quả:
{'brand': 'Honda', 'model': 'Honda Civic', 'year': 2020}
Duyệt các item của Dictionary trong Python
Bạn có thể duyệt qua một Dictionary bằng cách sử dụng vòng lặp for .
Khi duyệt một Dictionary bằng vòng lặp for, giá trị trả về là các khóa, khi đó bạn có thể dùng hàm get() để lấy giá trị của khóa.
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } for x in dictCar: print(x, ": ", dictCar.get(x))
Kết quả:
brand : Honda model : Honda Civic year : 1972
Bạn cũng có thể sử dụng hàm values() để trả về các giá trị của Dictionary:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } for x in dictCar.values(): print(x)
Kết quả:
Honda Honda Civic 1972
Kiểm tra nếu key tồn tại
Để xác định xem một khóa (key) được chỉ định có tồn tại trong từ điển hay không, hãy sử dụng từ khóa in :
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } if "model" in dictCar: print("Khoa \"model\" co ton tai.") else: print("Khoa \"model\" khong ton tai.")
Kết quả:
Khoa "model" co ton tai.
Độ dài của một Dictionary trong Python
Để xác định có bao nhiêu item (cặp khóa-giá trị) trong Dictionary, hãy sử dụng hàm len().
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } print(len(dictCar))
Kết quả:
3
Thêm các item vào Dictionary
Thêm một item vào Dictionary được thực hiện bằng cách sử dụng khóa mới và gán giá trị cho nó:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dictCar["color"] = "yellow" print(dictCar)
Kết quả:
{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972, 'color': 'yellow'}
Xóa item của Dictionary
Có nhiều phương pháp để loại bỏ các item của một Dictionary.
Xóa item của Dictionary bằng hàm pop()
Hàm pop() xóa item với key được chỉ định:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dictCar.pop("model") print(dictCar)
Kết quả:
{'brand': 'Honda', 'year': 1972}
Xóa item của Dictionary bằng hàm popitem()
Hàm popitem() xóa item cuối cùng (trong các phiên bản trước 3.7, một mục ngẫu nhiên được xóa).
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dictCar.popitem() print(dictCar)
Kết quả:
{'brand': 'Honda', 'model': 'Honda Civic'}
Xóa item của Dictionary bằng từ khóa del
Lệnh del sẽ xóa item với key được chỉ định:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } del dictCar["model"] print(dictCar)
Kết quả:
{'brand': 'Honda', 'year': 1972}
Xóa item của Dictionary bằng hàm clear()
Hàm clear() xóa toàn bộ các item của Dictionary.
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dictCar.clear() print(dictCar)
Kết quả:
{}
Copy Dictionary trong Python
Bạn không thể sao chép từ điển chỉ bằng cách gán dict2 = dict1, bởi vì: dict2 sẽ chỉ là một tham chiếu đến dict1 và những thay đổi được thực hiện dict1 cũng sẽ tự động được thực hiện dict2.
Có nhiều cách để tạo một bản sao, một trong các cách đó là sử dụng hàm copy() được xây dựng trong Dictionary.
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dict1 = dictCar # su dung toan tu = dict2 = dictCar.copy() # su dung ham copy() dictCar["color"] = "yellow" # thay doi dictCar print("dict1: ", dict1) print("dict2: ", dict2)
Kết quả:
dict1: {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972, 'color': 'yellow'} dict2: {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}
Một cách khác để tạo một bản sao là sử dụng hàm tích hợp sẵn dict()
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } dict1 = dictCar # su dung toan tu = dict2 = dict(dictCar) # su dung ham dict() dictCar["color"] = "yellow" # thay doi dictCar print("dict1: ", dict1) print("dict2: ", dict2)
Kết quả:
dict1: {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972, 'color': 'yellow'} dict2: {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}
Dictionary lồng nhau trong Python
Một Dictionary cũng có thể chứa nhiều Dictionary, điều này được gọi là từ điển lồng nhau.
Ví dụ: tạo một Dictionary chứa 3 Dictionary khác.
myfamily = { "child1" : { "name" : "Van", "birthday" : 2004 }, "child2" : { "name" : "Minh", "birthday" : 2007 }, "child3" : { "name" : "Phuc", "birthday" : 2011 } } print(myfamily)
Kết quả:
{'child1': {'name': 'Van', 'birthday': 2004}, 'child2': {'name': 'Minh', 'birthday': 2007}, 'child3': {'name': 'Phuc', 'birthday': 2011}}
Với một khai báo khác rõ ràng, dể hiểu hơn, ví dụ trên tương đương với ví dụ sau:
child1 = { "name" : "Van", "birthday" : 2004 } child2 = { "name" : "Minh", "birthday" : 2007 } child3 = { "name" : "Phuc", "birthday" : 2011 } myfamily = { "child1" : child1, "child2" : child2, "child3" : child3 } print(myfamily)
Kết quả:
{'child1': {'name': 'Van', 'birthday': 2004}, 'child2': {'name': 'Minh', 'birthday': 2007}, 'child3': {'name': 'Phuc', 'birthday': 2011}}
Constructor dict() trong Python
Cũng có thể sử dụng constructor dict() để tạo một Dictionary mới:
dictCar = dict(brand="Honda", model="Honda Civic", year=1972) print(dictCar)
Kết quả:
{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}
Các hàm và phương thức đã được xây dựng sẵn cho Dictionary trong Python
Python đã xây dựng sẵn các hàm sau để được sử dụng với Dictionary. Bạn có thể theo dõi ví dụ chi tiết về các hàm này ở phần dưới đây.
STT | Hàm và Miêu tả |
---|---|
1 | Hàm len(dict) Độ dài của dict. Nó sẽ là số item trong Dictionary này |
2 | Hàm str(dict) Tạo ra một biểu diễn chuỗi có thể in được của một dict |
3 | Hàm type(variable) Trả về kiểu của biến đã truyền. Nếu biến đã truyền là Dictionary, thì nó sẽ trả về một kiểu Dictionary |
Các phương thức đã được xây dựng sẵn cho Dictionary trong Python:
STT | Hàm và Miêu tả |
---|---|
1 | Hàm dict.clear() Xóa tất cả phần tử của dict |
2 | Hàm dict.copy() Trả về bản sao của dict |
3 | Hàm fromkeys(seq,value1)/ fromkeys(seq) Được sử dụng để tạo một Dictionary mới từ dãy seq và value1. Trong đó dãy seq tạo nên các key và tất cả các key chia sẻ các giá trị từ value1. Trong trường hợp value1 không được cung cấp thì value của các key được thiết lập là None |
4 | Hàm dict.get(key, default=None) Trả về giá trị của key đã cho. Nếu key không có mặt thì phương thức này trả về None |
5 | Hàm dict.has-key(key) Trả về true nếu key là có mặt trong Dictionary, nếu không là false |
6 | Hàm dict.items() Trả về tất cả các cặp (key-value) của một Dictionary |
7 | Hàm dict.keys() Trả về tất cả các key của một Dictionary |
8 | Hàm dict.setdefault(key, default=None) Tương tự get(), nhưng sẽ thiết lập dict[key]=default nếu key là không tồn tại trong dict |
9 | Hàm dict.update(dict2) Được sử dụng để thêm các item của dictionary 2 vào Dictionary đầu tiên |
10 | Hàm dict.values() Trả về tất cả các value của một Dictionary |