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ụ:

#!/usr/bin/python

 

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

print "dict['Name']: ", dict['Name']

print "dict['Age']: ", dict['Age']

Kết quả là:

dict['Name']:  Zara
dict['Age']:  7

 (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:

#!/usr/bin/python

 

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

print "dict['Alice']: ", dict['Alice']

Khi code trên được thực thi sẽ cho kết quả:

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

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.

1. cmp(dict1, dict2)

So sánh các phần tử của cả hai dict

Cú pháp

Cú pháp của cmp() trong Python:

cmp(dict1, dict2)

Chi tiết về tham số:

  • dict1 -- Đây là Dictionary đầu tiên để được so sánh với dict2.
  • dict2 -- Đây là Dictionary thứ hai để được so sánh với dict1.

Trả về giá trị

Trả về 0 nếu cả hai Dictionary là cân bằng, -1 nếu dict1 < dict2 và 1 nếu dict1 > dic2.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của cmp() trong Python.

dict1 = {'Ten': 'Hoang', 'Tuoi': 7};

dict2 = {'Ten': 'Nam', 'Tuoi': 27};

dict3 = {'Ten': 'Huong', 'Tuoi': 27};

dict4 = {'Ten': 'Hoang', 'Tuoi': 7};

print "Gia tri tra ve : %d" %  cmp (dict1, dict2)

print "Gia tri tra ve : %d" %  cmp (dict2, dict3)

print "Gia tri tra ve : %d" %  cmp (dict1, dict4)

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri tra ve : -1

Gia tri tra ve : 1

Gia tri tra ve : 0

2. len(dict)

Độ dài của dict. Nó sẽ là số item trong Dictionary này

Cú pháp

Cú pháp của len() trong Python:

len(dict)

Chi tiết về tham số:

  • dict -- Đây là Dictionary bạn cần tính độ dài.

Trả về giá trị

Phương thức này trả về độ dài của Dictionary.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của len() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20};

print "Do dai cua dict la : %d" % len (dict)

Chạy chương trình Python trên sẽ cho kết quả −

Do dai cua dict la : 2

3. str(dict)

Tạo ra một biểu diễn chuỗi có thể in được của một dict

Cú pháp

Cú pháp của str() trong Python:

str(dict)

Chi tiết về tham số:

  • dict -- Đây là Dictionary.

Trả về giá trị

Phương thức này trả về biểu diễn chuỗi.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của str() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20};

print "Bieu dien chuoi tuong duong la : %s" % str (dict)

Chạy chương trình Python trên sẽ cho kết quả −

Bieu dien chuoi tuong duong la : {'Tuoi': 20, 'Ten': 'Hoang'}

4. 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ú pháp

Cú pháp của type() trong Python:

type(dict)

Chi tiết về tham số:

  • dict -- Đây là Dictionary.

Trả về giá trị

Phương thức này trả về kiểu của biến đã truyền.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của type() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20};

print "Kieu bien da truyen la : %s" %  type (dict)

Chạy chương trình Python trên sẽ cho kết quả −

Kieu bien da truyen la : <type 'dict'>

Các phương thức đã được xây dựng sẵn cho Dictionary trong Python:

1. dict.clear()

Xóa tất cả phần tử của dict

Cú pháp

Cú pháp của clear() trong Python:

dict.clear()

Chi tiết về tham số:

  • NA

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của clear() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20};

 

print "Do dai ban dau : %d" %  len(dict)

dict.clear()

print "Do dai sau khi xoa la : %d" %  len(dict)

Chạy chương trình Python trên sẽ cho kết quả −

Do dai ban dau : 2

Do dai sau khi xoa la : 0

2. dict.copy()

Trả về bản sao của dict

Cú pháp

Cú pháp của copy() trong Python:

dict.copy()

Chi tiết về tham số:

  • NA

Trả về giá trị

Trả về bản sao của Dictionary.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của copy() trong Python.

dict1 = {'Ten': 'Hoang', 'Tuoi': 20};

 

dict2 = dict1.copy()

print "Dictionary moi co dang : %s" %  str(dict2)

Chạy chương trình Python trên sẽ cho kết quả −

Dictionary moi co dang : {'Tuoi': 20, 'Ten': 'Hoang'}

3. 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

Cú pháp

Cú pháp của fromkeys() trong Python:

dict.fromkeys(seq[, value]))

Chi tiết về tham số:

  • seq -- Đây là danh sách các value mà sẽ được sử dụng cho key trong Dictionary.
  • value -- Tham số này là tùy ý, nếu được cung cấp thì value sẽ được thiết lập theo tham số này.

Trả về giá trị

Phương thức này trả về List.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của fromkeys() trong Python.

seq = ('ten', 'tuoi', 'gioitinh')

 

dict = dict.fromkeys(seq)

print "Dictionary moi co dang : %s" %  str(dict)

 

dict = dict.fromkeys(seq, 2)

print "Dictionary moi co dang : %s" %  str(dict)

Chạy chương trình Python trên sẽ cho kết quả −

Dictionary moi co dang : {'tuoi': None, 'ten': None, 'gioitinh': None}

Dictionary moi co dang : {'tuoi': 2, 'ten': 2, 'gioitinh': 2}

4. 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

Cú pháp

Cú pháp của get() trong Python:

dict.get(key, default=None)

Chi tiết về tham số:

  • key -- Đây là key để được tìm trong Dictionary.
  • default -- Đây là giá trị được trả về trong trường hợp key không tồn tại.

Trả về giá trị

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.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của get() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 27}

 

print "Gia tri cua key da cho la : %s" %  dict.get('Tuoi')

print "Gia tri cua key da cho la : %s" %  dict.get('Gioitinh', "Never")

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri cua key da cho la : 27

Gia tri cua key da cho la : Never

5. dict.has_key(key)

Trả về true nếu key là có mặt trong Dictionary, nếu không là false

Cú pháp

Cú pháp của has_key() trong Python:

dict.has_key(key)

Chi tiết về tham số:

  • key -- Đây là key để được tìm trong Dictionary.

Trả về giá trị

Trả về true nếu key là có mặt trong Dictionary, nếu không là false.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của has_key() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20}

 

print "Gia tri : %s" %  dict.has_key('Tuoi')

print "Gia tri : %s" %  dict.has_key('Gioitinh')

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri : True

Gia tri : False

6. dict.items()

Trả về tất cả các cặp (key-value) của một Dictionary

Cú pháp

Cú pháp của items() trong Python:

dict.items()

Chi tiết về tham số:

  • NA

Trả về giá trị

Trả về tất cả các cặp (key-value) của một Dictionary.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của items() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20}

 

print "Gia tri : %s" %  dict.items()

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri : [('Tuoi', 20), ('Ten', 'Hoang')]

7. dict.keys()

Trả về tất cả các key của một Dictionary

Cú pháp

Cú pháp của keys() trong Python:

dict.keys()

Chi tiết về tham số:

  • NA

Trả về giá trị

Trả về một danh sách chứa tất cả các key của một Dictionary.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của keys() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20}

 

print "Gia tri : %s" %  dict.keys()

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri : ['Tuoi', 'Ten']

8. 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

Cú pháp

Cú pháp của setdefault() trong Python:

dict.setdefault(key, default=None)

Chi tiết về tham số:

  • key -- Là key để được tìm.
  • default -- Là giá trị để được trả về trong trường hợp key không tồn tại.

Trả về giá trị

Trả về key có trong Dictionary, và nếu key không có thì phương thức trả về giá trị mặc định.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của setdefault() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20}

 

print "Gia tri : %s" %  dict.setdefault('Tuoi', None)

print "Gia tri : %s" %  dict.setdefault('Gioitinh', None)

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri :20

Gia tri : None

9. dict.update(dict2)

Được sử dụng để thêm các item của dictionary 2 vào Dictionary đầu tiên

Cú pháp

Cú pháp của update() trong Python:

dict.update(dict2)

Chi tiết về tham số:

  • dict2 -- Đây là Dictionary để được thêm vào trong dict.

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của update() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 20}

dict2 = {'Gioitinh': 'nam' }

 

dict.update(dict2)

print "Gia tri : %s" %  dict

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri : {'Tuoi': 20, 'Ten': 'Hoang', 'Gioitinh': 'nam'}

10. dict.values()

Trả về tất cả các value của một Dictionary

Cú pháp

Cú pháp của values() trong Python:

dict.values()

Chi tiết về tham số:

  • NA

Trả về giá trị

Trả về tất cả các value của một Dictionary.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của values() trong Python.

dict = {'Ten': 'Hoang', 'Tuoi': 7}

 

print "Gia tri : %s" %  dict.values()

Chạy chương trình Python trên sẽ cho kết quả −

Gia tri : [7, 'Hoang']