Kiểu dữ liệu Dict trong Python - Phần 1

Lập trình Python cơ bản

5.0 (6 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 3 năm trước 124.677 lượt xem 14 bình luận
Tác giả/Dịch giả: Kteam Nông Thanh Toàn
Học nhanh

Danh sách bài học

01. Giới thiệu ngôn ngữ lập trình Python 02. Cài đặt môi trường Python 03. Cách chạy chương trình Python 04. Cách ghi chú trong Python 05. Biến trong Python 06. Kiểu dữ liệu số trong Python 07. Kiểu dữ liệu chuỗi trong Python - Phần 1 08. Kiểu dữ liệu chuỗi trong Python - Phần 2 09. Kiểu dữ liệu chuỗi trong Python - Phần 3 10. Kiểu dữ liệu chuỗi trong Python - Phần 4 11. Kiểu dữ liệu chuỗi trong Python - Phần 5 12. Kiểu dữ liệu List trong Python - Phần 1 13. Kiểu dữ liệu List trong Python - Phần 2 14. Kiểu dữ liệu Tuple trong Python 15. Sự khác nhau về toán tử của Hashable object và Unhashable object trong Python 16. Kiểu dữ liệu Set trong Python 16. Kiểu dữ liệu Set trong Python – Phần 2 17. Kiểu dữ liệu Dict trong Python - Phần 1 18. Kiểu dữ liệu Dict trong Python - Phần 2 19. Xử lý file trong Python 20. Iteration và một số hàm hỗ trợ cho iteration object trong Python 21. Nhập xuất trong Python - Hàm xuất 22. Nhập xuất trong Python - Hàm nhập 23. Kiểu dữ liệu Boolean trong Python 24. Cấu trúc rẽ nhánh trong Python 25. Vòng lặp While trong Python 26. Vòng lặp For trong Python - Phần 1 27. Vòng lặp For trong Python - Phần 2 28. Kiểu dữ liệu Function trong Python - Sơ lược về hàm 29. Kiểu dữ liệu Function trong Python - Positional và keyword argument 30. Kiểu dữ liệu Function trong Python - Packing và unpacking arguments 31. Kiểu dữ liệu Function trong Python - Biến locals và globals 32. Kiểu dữ liệu Function trong Python - Return 33. Kiểu dữ liệu function trong Python – Yield 34. Kiểu dữ liệu function trong Python – Lambda 35. Kiểu dữ liệu Function trong Python - Functional tools 36. Kiểu dữ liệu Function trong Python - Đệ quy (recursion) 37. Giới thiệu module trong Python 38. Package trong python

Kiểu dữ liệu Dict trong Python - Phần 1

Dẫn nhập

Trong các bài trước, Kteam đã giới thiệu đến bạn KIỂU DỮ LIỆU SET trong Python

Ở bài này Kteam sẽ đề cập đến các bạn KIỂU DỮ LIỆU DICT trong Python.  Một trong những kiểu dữ liệu cực kì quan trọng trong Python.


Nội dung

Để đọc hiểu bài này tốt nhất bạn cần:

Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây

  • Giới thiệu về Dict trong Python
  • Cách khởi tạo Dict
  • Lấy value trong Dict bằng key
  • Thay đổi nội dung Dict trong Python
  • Thêm thủ công một phần tử vào Dict

Giới thiệu về Dict trong Python

Dict(Dictionary) cũng là một container như LIST, TUPLE. Có điều khác biệt là những container như List, Tuple có các index để phân biệt các phần tử thì Dict dùng các key để phân biệt.

Chắc bạn cũng dùng từ điển tiếng Anh để tra từ vựng rồi nhỉ? Có rất nhiều từ vựng trong đó nhưng mà không từ vựng nào giống nhau. Có chăng chúng chỉ giống nhau về nghĩa? Và đó cũng như Dict(Dictionary) hoạt động trong Python

Một Dict gồm các yếu tố sau:

  • Được giới hạn bởi cặp ngoặc nhọn {}, tất cả những gì nằm trong đó là những phần tử của Dict.
  • Các phần tử của Dict được phân cách nhau ra bởi dấu phẩy (,).
  • Các phần tử của Dict phải là một cặp key-value
  • Cặp key-value của phần tử trong Dict được phân cách bởi dấu hai chấm (:)
  • Các key buộc phải là một hash object

Cách khởi tạo Dict

Sử dụng cặp  dấu ngoặc {} và đặt giá  trị bên trong

Cú pháp:

{<key_1: value_1>, <key_2: value_2>, .., <key_n: value_n>}

Ví dụ:


Sử dụng Dict Comprehension

Điều kiện để sử dụng dict comprehension là mỗi giá trị khi được duyệt qua phải bao gồm một giá trị tương ứng với key và một giá trị tương ứng với value.

Ví dụ:


Sử dụng constructor Dict

Với dict, ta có 4 cách để khởi tạo một Dict bằng constructor:

Khởi tạo một Dict rỗng

Cú pháp:

dict()

Ví dụ:


Khởi tạo một dict từ một mapping object  

Cú pháp:

dict(mapping)

Trong đó:

Mapping object cũng gần giống so với dict object.

  • Một object là Mapping object khi có đủ hai phương thức keys __getitem__.
  • Dict object cũng là một mapping object. Tuy nhiên, không phải mapping object nào cũng là dict object vì dict object không chỉ có hai phương thức keys và __getitem__ và còn nhiều phương thức khác.

Bạn có thể bỏ qua ví dụ bên dưới hoặc xem để tham khảo vì phần này có thể khá khó hiểu.

Ví dụ:


Khởi tạo bằng iterable

Cú pháp:

dict(iterable)

Trong đó:

iterable này đặc biệt hơn hơn các iterable mà bạn dùng để khởi tạo List hay Tuple, đó là các phần tử trong iterable phải có 2 value đó chính là cặp key-value.

Bạn có thể dùng List, Tuple hoặc bất cứ container nào (trừ mapping object) để chứa cặp key-value.

Ví dụ 1:

Ví dụ 2:

Lưu ý: Nếu các bạn muốn khởi tạo dict bằng chuỗi như trên thì bắt buộc độ dài của chuỗi phải là 2. Giá trị đầu sẽ là key, giá trị thứ 2 là value.


Khởi tạo bằng keyword arguments

Cú pháp 1:

dict(**kwargs)

Trong đó:

Bạn chưa tìm hiểu đến hàm, nên khái niệm keyword arguments vẫn còn rất xa lạ!

  • Cứ hiểu đơn giản là giống như việc bạn khởi tạo biến và giá trị rồi đưa cho dict đó giữ giùm.
  • Một lưu ý là những biến này không bị ảnh hưởng hoặc ảnh hưởng gì đến các biến bên ngoài

Ví dụ:

Cú pháp 2:

dict(<key_1> = <value_1>, <key_2> = <value_2>, ...)

Khi khởi tạo dict bằng keyword arguments chỉ có thể hoạt động khi các key là tên các biến, còn các value là giá trị của các key tương ứng với nó (các biến có thể được khởi tạo trong cặp ngoặc {}).

Ví dụ:

Việc cố gắng khởi tạo dict như dưới đây là không hợp lệ.


Sử dụng Phương thức fromkeys

Cú pháp:

dict.fromkeys(iterable, value)

Công dụng: Cách này cho phép ta khởi tạo một dict với các keys nằm trong một iterable. Các giá trị này đều sẽ nhận được một giá  trị với mặc định là None

Ví dụ:


Lấy value trong Dict bằng key

Cú pháp:

Your_dict[key]

Ví dụ:


Thay đổi nội dung Dict trong Python

Dict là một unhashable object. Do đó, chắc bạn cũng biết ta có thể thay đổi được nội dung nó hay không. Nếu bạn nào nhanh trí, chắc cũng đã biết được cách thay đổi rồi. Tương tự như List thôi!

Ví dụ:


Thêm thủ công một phần tử vào dict

Cách này khá giống với cách bạn thay đổi nội dung của Dict. Khác ở chỗ, bây giờ bạn sẽ sử dụng một key chưa hề có trong dict.

Ví dụ:


Vấn đề cần lưu tâm khi sử dụng dict

Các bạn còn nhớ phần “Vấn đề cần lưu tâm khi sử dụng list” chứ ? Đối với dict, ta cũng cần có các lưu ý tương tự như vậy. Kteam sẽ đưa ra một vài ví dụ để cho các bạn hiểu. Nếu cần thiết, các bạn có thể xem lại bài “Kiểu dữ liệu list trong Python – Phần 1”.

Các lỗi dễ xảy ra với list cũng có thể xảy ra với dict

Và tất nhiên, có lỗi thì sẽ có cách sửa chữa


Củng cố bài học

Đáp án bài trước

Bạn có thể tìm thấy câu hỏi của phần này tại CÂU HỎI CỦNG CỐ trong bài KIỂU DỮ LIỆU SET TRONG PYTHON.

Vì khi: 

Ta đã cho a và b cùng trỏ vào một chỗ. Do đó thay đổi b thì a cũng sẽ bị tác động.

Muốn giải quyết chuyện này ta nên sử dụng phương thức copy


Kết luận

Bài viết này đã giới thiệu cho các bạn cơ bản về KIỂU DỮ LIỆU DICT TRONG PYTHON.

Ở bài sau, Kteam sẽ đề cập về các phương thức của KIỂU DỮ LIỆU DICT - Phần 2

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Kiểu dữ liệu Dict trong Python - Phần 1 dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Khóa học

Lập trình Python cơ bản

Lập trình Python cơ bản

Đánh giá

5.0
6 đánh giá
Đánh giá
5
6
4
3
2
1
Jalang đã đánh giá 3 năm trước

Trần Gia Thành đã đánh giá 4 năm trước

nhocsa11 đã đánh giá 4 năm trước

TTNam67 đã đánh giá 5 năm trước

tdkhoa2018 đã đánh giá 6 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
nghia123 đã bình luận 2 năm trước

ở đáp án bài trước có thể xài a == b thay vì .copy() e cũng thấy hiệu quả á anh :v

ngocqui196 đã bình luận 3 năm trước

Em không thể cho 2 kiểu dữ liệu như dưới vào dict được: 

a = [num for num in ranger(5)]

b = ['tuan', 'dat', 'nghia', 'thai', 'minh']

dict1 = dict.fromkeys(a,b)

Kết quả:

>>> {0:[ 'tuan', 'dat',  'nghia',  'thai',  'minh'], 1:[ 'tuan', 'dat',  'nghia',  'thai',  'minh'], 2:[ 'tuan', 'dat',  'nghia',  'thai',  'minh'], 3:[ 'tuan', 'dat',  'nghia',  'thai',  'minh'], 4:[ 'tuan', 'dat',  'nghia',  'thai',  'minh'],}

Đáp án mong muốn:

>>> {0: 'tuan', 1: 'dat', 2: 'nghia', 3: 'thai', 4: 'minh'}

thezahir đã bình luận 5 năm trước
a = dict(title='Toi la mot coder Python',month=9)
a.['capa'] = 'kha nang tu hoc'

mình gặp phải lỗi 'systax error' khi chạy đến dòng thứ 2, mặc dù mình đã kiểm tra hết dấu ngoặc rồi. có ai biết lý do tại sao kg?

Pham Huong đã bình luận 6 năm trước

em hỏi là hoán đổi key-value kiểu gì ạ

 

tdkhoa2018 đã bình luận 6 năm trước

Ở mục Cách khởi tạo dict --> sử dụng constructor dict --> Khởi tạo bằng iterable

Em nghĩ nên ghi: iterable là 1 list, các phần tử trong list đó là list hoặc tuple hoặc bất cứ container nào chứa 2 phần tử.
Sẽ rõ ràng hơn, lúc đầu em còn nghĩ iterable là tuple cũng được.
 

>>> dic = dict(((1, 2)))
>>> print(dic)
TypeError: cannot convert dictionary update sequence element #0 to a sequence

 

Không có video.