Dictionary trong Python là một tập hợp các cặp key và value không có thứ tự. Nó là một container mà chứa dữ liệu, được bao quanh bởi các dấu ngoặc móc đơn {}. 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ụ:
data={100:'Hoang' ,101:'Nam' ,102:'Binh'}
print data
Kết quả là:
>>>
{100: 'Hoang', 101: 'Nam', 102: 'Binh'}
>>>
Các thuộc tính của key trong Dictionary
Không có hạn chế nào với các value trong Dictionary, tuy nhiên với key thì bạn cần chú ý các điểm sau:
(a) Nhiều hơn một entry cho mỗi key là không được phép. Nghĩa là không cho phép bản sao các key được xuất hiện. Khi bắt gặp nhiều bản sao key trong phép gán, thì phép gán cuối cùng được thực hiện. Ví dụ:
dict = {'Ten': 'Hoang', 'Tuoi': 7, 'Ten': 'Nam'};
print "dict['Ten']: ", dict['Ten']
Kết quả là:
dict['Ten']: Nam
(b) Key phải là immutable. Nghĩa là bạn chỉ có thể sử dụng chuỗi, số hoặc tuple làm key của Dictionary. Dưới đây là ví dụ đơn giản:
dict = {['Ten']: 'Hoang', 'Tuoi': 7};
print "dict['Ten']: ", dict['Ten']
Khi code trên được thực thi sẽ cho kết quả:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Ten']: 'Hoang', 'Tuoi': 7};
TypeError: list objects are unhashable
Truy cập các giá trị trong Dictionary trong Python
Khi chỉ mục không được định nghĩa với Dictionary, thì các giá trị trong Dictionary có thể được truy cập thông qua các key của chúng. Cú pháp:
<ten_dictionary>[key]
Ví dụ:
data1={'Id':100, 'Ten':'Thanh', 'Nghenghiep':'Developer'} data2={'Id':101, 'Ten':'Chinh', 'Nghenghiep':'Trainer'} print "Id cua nhan vien dau tien la",data1['Id'] print "Id cua nhan vien thu hai la",data2['Id'] print "Ten cua nhan vien dau tien la:",data1['Ten'] print "Nghe nghiep cua nhan vien thu hai la:",data2['Nghenghiep']
Kết quả là:
>>> Id cua nhan vien dau tien la 100 Id cua nhan vien thu hai la 101 Ten cua nhan vien dau tien la is Thanh Nghe nghiep cua nhan vien thu hai la Trainer >>>
Nếu bạn cố gắng truy cập một item với một key nào mà không là một phần của Dictionary nào, thì bạn sẽ nhận một lỗi như sau:
dict = {'Ten': 'Hoang', 'Tuoi': 7, 'Lop': 'Lop1'};
print "dict['Huong']: ", dict['Huong']
Code trên sẽ cho một lỗi là:
dict['Hoang']: Traceback (most recent call last): File "test.py", line 4, in <module> print "dict['Huong']: ", dict['Huong']; KeyError: 'Huong'
Cập nhật Dictionary trong Python
Item (cặp key-value) có thể được cập nhật. Bạn cập nhật một Dictionary bằng cách thêm một entry mới hoặc một cặp key-value mới, sửa đổi một entry đã tồn tại, hoặc xóa một entry đang tồn tại như trong ví dụ đơn giản sau:
data1={'Id':100, 'Ten':'Thanh', 'Nghenghiep':'Developer'} data2={'Id':101, 'Ten':'Chinh', 'Nghenghiep':'Trainer'} data1['Nghenghiep']='Manager' data2['Mucluong']=17000000 data1['Mucluong']=12000000 print data1 print data2
Khi code trên được thực thi sẽ cho kết quả:
>>> {'Mucluong': 12000000, 'Nghenghiep': 'Manager','Id': 100, 'Ten': 'Thanh'} {'Mucluong': 17000000, 'Nghenghiep': 'Trainer', 'Id': 101, 'Ten': 'Chinh'} >>>
Xóa phần tử từ Dictionary trong Python
Với Dictionary, bạn có thể xóa một phần tử đơn hoặc xóa toàn bộ nội dung của Dictionary đó. Bạn sử dụng lệnh del để thực hiện các hoạt động này.
Cú pháp để xóa một item từ Dictionary:
del ten_dictionary[key]
Để xóa cả Dictionary, bạn sử dụng cú pháp:
del ten_dictionary
Ví dụ:
data={100:'Hoang', 101:'Thanh', 102:'Nam'}
del data[102]
print data
del data
print data #se hien thi mot error boi vi Dictionary da bi xoa.
Code trên sẽ cho kết quả như dưới đây. Bạn có thể thấy một ngoại lệ được tạo ra bởi vì sau khi xóa data thì Dictionary này không tồn tại nữa.
>>>
{100: 'Hoang', 101: 'Thanh'}
Traceback (most recent call last):
File "C:/Python27/dict.py", line 5, in >module<
print data
NameError: name 'data' is not defined
>>>
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 cmp(dict1, dict2) So sánh các phần tử của cả hai dict |
2 | Hàm len(dict) Độ dài của dict. Nó sẽ là số item trong Dictionary này |
3 | Hàm str(dict) Tạo ra một biểu diễn chuỗi có thể in được của một dict |
4 | 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 | Phương thức và Miêu tả |
---|---|
1 | Phương thức dict.clear() Xóa tất cả phần tử của dict |
2 | Phương thức dict.copy() Trả về bản sao của dict |
3 | Phương thức 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 | Phương thức 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 | Phương thức dict.has_key(key) Trả về true nếu key là có mặt trong Dictionary, nếu không là false |
6 | Phương thức dict.items() Trả về tất cả các cặp (key-value) của một Dictionary |
7 | Phương thức dict.keys() Trả về tất cả các key của một Dictionary |
8 | Phương thức 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 | Phương thức dict.update(dict2) Được sử dụng để thêm các item của dictionary 2 vào Dictionary đầu tiên |
10 | Phương thức dict.values() Trả về tất cả các value của một Dictionary |