Dictionary trong Python




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.

STTHà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:

STTPhươ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