8.Từ điển trong Python (python dict)

Từ điển là một ví dụ khác về cấu trúc dữ liệu trong python. Từ điển được dùng để ánh xạ hoặc liên kết dữ liệu bạn cần lưu trữ (value) và khóa (key) bạn cần để lấy ra dữ liệu đó. Từ điển trong Python giống như từ điển trong thế giới thực. Từ điển trong Python được định nghĩa gồm hai thành phần là khóa (key) và giá trị (value).

  • Khóa là đối tượng mang tính duy nhất.

  • Giá trị được lưu có thể là một danh sách hoặc danh sách trong danh sách, một chuỗi, một số, một đối tượng bất kỳ trong python …

Trong bài này, chúng ta sẽ tìm hiểu về:

  • Các phương thức làm việc với từ điển trong Python

  • Sao chép từ điển

  • Cập nhật từ điển

  • Xóa khóa khỏi từ điển

  • Phương thức trả về danh sách đối tượng items()

  • Sắp xếp từ điển

  • Các hàm dựng sẵn của từ điển

  • Phương thức trả về kích thước len()

  • Các loại biến

  • Phương thức so sánh cmp()

  • Phương thức chuyển đổi sang chuỗi str(dict)

Cú pháp khai báo từ điển Python

Dict = {'Name': ‘Tim’, ‘Age’: 18, ..}

Từ điển được liệt kê trong dấu ngoặc nhọn, bên trong các dấu ngoặc nhọn này, khóa và giá trị được khai báo. Mỗi khóa được phân tách khỏi giá trị của nó bằng dấu hai chấm (:) trong khi giữa các phần tử được phân tách bằng dấu phẩy.

Thuộc tính của khóa trong từ điển

Có hai điều cần lưu ý khi sử dụng khóa trong từ điển:

  • Một khóa không thể xuất hiện hai lần (khóa không được trùng nhau).

  • Giá trị được lưu trong từ điển có thể thuộc bất kỳ kiểu nào trong khi khóa phải là kiểu bất biến như số, tuple hoặc chuỗi.

  • Khóa sử dụng trong từ điển có phân biệt chữ hoa chữ thường – Cùng tên khóa nhưng tên khóa viết hoa và viết thường sẽ được coi là các khóa khác nhau.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print (Dict['Tiffany'])

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print((Dict['Tiffany']))
  • Trong đoạn mã trên, chúng ta khai báo từ điển với tên “Dict”

  • Tên và tuổi của người được khai báo trong từ điển, trong đó tên được sử dụng làm “khóa” còn tuổi được sử dụng làm “giá trị”.

  • Giờ hãy chạy đoạn mã trên

  • Chương trình sẽ trả về tuổi của Tiffany được lưu trong từ điển.

Các phương thức làm việc với từ điển

Sao chép từ điển

Bạn cũng có thể sao chép toàn bộ từ điển sang từ điển mới. Ví dụ, ở đây chúng ta đã sao chép từ điển ban đầu sang từ điển mới là “Boys” và “Girls”.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
studentX=Boys.copy()
studentY=Girls.copy()
print studentX
print student

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
studentX=Boys.copy()
studentY=Girls.copy()
print(studentX)
print(studentY)
  • Chúng ta có từ điển gốc (Dict) chứa tên và tuổi của tất cả con trai và con gái.

  • Nhưng chúng ta muốn tách biệt danh sách con trai và con gái, vì thế chúng ta định nghĩa các phần tử con trai và con gái thành các từ điển riêng biệt với tên gọi “Boys” – con trai, “Girls” – con gái.

  • Giờ chúng ta tạo thêm từ điển mới với tên gọi “studentX” và “studentY”, trong đó toàn bộ khóa và giá trị lưu trong từ điển “Boys” sẽ được sao chép sang từ điển studentX, và “Girls” sẽ được sao chép sang từ điển studentY.

  • Vì thế giờ bạn không cần tìm kiếm toàn bộ danh sách trong từ điển chính (Dict) để kiểm tra đâu là con trai và đâu là con gái, bạn chỉ cần in ra studentX nếu cần danh sách con trai hay studentY nếu cần danh sách con gái.

  • Vậy là khi bạn chạy từ điển studentX và studentY, nó sẽ cung cấp tất cả các phần tử có trong từ điển của “Boys” và “Girls”

Cập nhật từ điển

Bạn cũng có thể cập nhật lại từ điển bằng cách thêm mới phần tử, hoặc một cặp khóa-giá trị vào vị trí có sẵn hoặc xóa một phần tử khỏi từ điển. Trong ví dụ dưới đây, chúng ta sẽ bổ sung thêm tên “Sarah” vào từ điển sẵn có của chúng ta.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Dict.update({"Sarah":9})
print Dict

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Dict.update({"Sarah":9})
print(Dict)
  • Từ điển Dict ban đầu của chúng ta không có tên “Sarah”.

  • Chúng ta sử dụng phương thức Dict.update để thêm Sarah vào từ điển hiện có của chúng ta

  • Giờ sau khi chạy chương trình, Sarah sẽ được thêm vào từ điển đã có.

Xóa khóa khỏi từ điển

Từ điển trong Python cho phép bạn tự do xóa bất kỳ thành phần nào khỏi danh sách trong từ điển. Giả sử bạn không muốn tên Charlie trong từ điển, bạn có thể xóa khóa này như sau:

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
del Dict ['Charlie']
print Dict

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
del Dict ['Charlie']
print(Dict)

Khi bạn chạy đoạn mã trên, danh sách được in ra trong từ điển sẽ không chứa tên Charlie.

  • Chúng ta đã sử dụng lệnh xóa del Dict

  • Khi chương trình chạy, tên Charlie sẽ bị xóa khỏi từ điển chính.

Phương thức trả về danh sách đối tượng items()

Phương thức items() trả về một danh sách các cặp tuple (Khóa, Giá trị) trong từ điển.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print "Students Name: %s" % Dict.items()

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print("Students Name: %s" % list(Dict.items()))
  • Chúng ta đã sử dụng phương thức trả về danh sách đối tượng items() cho từ điển Dict.

  • Khi chương trình chạy, danh sách các đối tượng (khóa và giá trị) trong từ điển sẽ được trả về.

Kiểm tra sự tồn tại của khóa cho trước trong từ điển

Đối với một danh sách cho trước, bạn cũng có thể kiểm tra xem từ điển con của chúng ta có tồn tại trong từ điển chính hay không. Ở đây chúng ta có hai từ điển phụ “Boys” và “Girls”, bây giờ chúng ta muốn kiểm tra xem từ điển Boys có tồn tại trong “Dict” chính hay không. Để làm điều đó chúng ta sử dụng phương thức vòng lặp for với điều kiện if else.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
for key in Dict.keys():
    if key in Boys.keys():
        print True
    else:       
        print False

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
for key in list(Dict.keys()):
    if key in list(Boys.keys()):
        print(True)
    else:       
        print(False)
  • Vòng lặp for trong đoạn mã trên sẽ duyệt lần lượt từng khóa trong từ điển chính để tìm khóa trong từ điển Boys.

  • Nếu khóa tồn tại trong từ điển chính, chương trình sẽ in ra True – đúng, còn nếu không sẽ in ra False – sai.

  • Khi chương trình chạy, nó sẽ in ra “True” ba lần, vì chúng ta có ba phần tử thuộc từ điển “Boys”.

  • Vậy chương trình đã chỉ ra rằng “Boys” tồn tại trong từ điển chính (Dict)

Sắp xếp từ điển

Các thành phần trong từ điển có thể được sắp xếp. Ví dụ: nếu chúng ta muốn in tên của các thành phần trong từ điển theo thứ tự abc, chúng ta phải sử dụng vòng lặp for. Các thành phần trong từ điển sẽ được sắp xếp tương ứng.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
Students = Dict.keys()
Students.sort()
for S in Students:
      print":".join((S,str(Dict[S])))

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
Students = list(Dict.keys())
Students.sort()
for S in Students:
      print(":".join((S,str(Dict[S]))))
  • Chúng ta khai báo biến students cho từ điển “Dict”.

  • Sau đó câu lệnh Students.sort sẽ sắp xếp các thành phần bên trong từ điển.

  • Nhưng để sắp xếp từng phần tử trong từ điển, chúng ta cần chạy vòng lặp for bằng cách khai báo biến S.

  • Giờ khi chương trình được chạy, vòng lặp for sẽ duyệt tới từng phần tử trong từ điển và in ra chuỗi cùng với giá trị theo đúng thứ tự.

Các hàm dựng sẵn của từ điển trong Python

Phương thức trả về kích thước từ điển len()

Hàm len() trả về số lượng cặp trong từ điển.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print "Length : %d" % len (Dict)

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print("Length : %d" % len (Dict))

Khi hàm len(Dict) được thực thi, chương trình sẽ trả về kết quả “4” vì có 4 phần tử trong từ điển.

Các kiểu biến

Python không yêu cầu khai báo rõ ràng không gian bộ nhớ dự trữ; điều này được thực hiện ngầm. Dấu “=” được sử dụng để gán giá trị cho biến. Để xác định kiểu biến, ta dùng “%type(Dict)”.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print "variable Type: %s" %type (Dict)

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print("variable Type: %s" %type (Dict))
  • Sử dụng %type để xác định kiểu biến

  • Khi chương trình được thực thi, nó sẽ trả về kết quả kiểu của biến là từ điển.

Phương thức so sánh cmp()

Phương thức so sánh cmp () được sử dụng trong Python để so sánh các giá trị và khóa của hai từ điển. Nếu phương thức trả về 0 tức là hai từ điển đều bằng nhau, 1 nếu dic1 > dict2 và -1 nếu dict1 < dict2.

Ví dụ sử dụng Python 2

Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
print cmp(Girls, Boys)

Ví dụ sử dụng Python 3

cmp không được hỗ trợ trong Python 3

  • Chúng ta có hai từ điển là “Boys” và “Girls”

  • Từ điển nào được sử dụng trước trong lời gọi hàm “cmp(Girls,Boys)” sẽ được xem là từ điển 1. Trong trường hợp này, chúng ta khai báo “Girls” đầu tiên, vì vậy nó sẽ được cọi là từ điển 1, và “Boys” là từ điển 2.

  • Khi chương trình được chạy, nó sẽ in ra kết quả -1, có nghĩa là từ điển 1 sẽ nhỏ hơn từ điển 2.

Phương thức chuyển đổi sang chuỗi str(dict)

Với phương thức str(), bạn có thể biến từ điển thành định dạng chuỗi có thể in được.

Ví dụ sử dụng Python 2

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print "printable string:%s" % str (Dict)

Ví dụ sử dụng Python 3

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print("printable string:%s" % str (Dict))
  • Sử dụng lời gọi % str(Dict)

  • Chương trình sẽ trả về chuỗi có thể in ra được.

Dưới đây là tất cả các phương thức làm việc với từ điển

Phương thức

Mô tả

Cú pháp

copy()

Sao chép toàn bộ từ điển sang từ điển mới

dict.copy ()

update()

Cập nhật một từ điển bằng cách thêm một mục mới hoặc một cặp khóa-giá trị vào một mục hiện có hoặc bằng cách xóa mục hiện có.

Dict.update ([other])

items()

Trả về danh sách các cặp tuple (Khóa, Giá trị) trong từ điển.

dictionary.items ()

sort()

Sắp xếp các phần tử trong từ điển.

dictionary.sort ()

len()

Trả về số lượng cặp trong từ điển

len (dict)

cmp()

So sánh giá trị và khóa của hai từ điển

cmp (dict1, dict2)

str()

Chuyển đổi từ điển thành định dạng chuỗi có thể in

str(dict)

Tổng kết

Từ điển trong ngôn ngữ lập trình là một loại cấu trúc dữ liệu được sử dụng để lưu trữ dữ liệu có liên quan tới nhau theo một cách nào đó. Từ điển trong Python được định nghĩa thành hai yếu tố là Khóa và Giá trị. Từ điển lưu trữ dữ liệu không theo thứ tự nào, vậy nên bạn có thể nhận được dữ liệu trả về từ từ điển không giống với thứ tự bạn nhập vào.

  • Khóa là đối tượng mang tính duy nhất

  • Giá trị được lưu có thể là một danh sách hoặc danh sách trong danh sách, số, v.v.

  • Một khóa không thể xuất hiện hai lần (khóa không được trùng nhau).

  • Giá trị được lưu trong từ điển có thể thuộc bất kỳ kiểu nào trong khi khóa phải là kiểu bất biến như số, tuple hoặc chuỗi.

  • Khóa sử dụng trong từ điển có phân biệt chữ hoa chữ thường – Cùng tên khóa nhưng tên khóa viết hoa và viết thường sẽ được coi là các khóa khác nhau.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *