Tại sao lại sử dụng từ điển thay vì danh sách trong python?

Ngôn ngữ lập trình Python được các nhà phát triển sử dụng rộng rãi trong các dự án khoa học dữ liệu. Để hoàn thành các dự án như vậy, việc hiểu cấu trúc dữ liệu đóng một vai trò quan trọng. Python có một số cấu trúc dữ liệu tích hợp như danh sách, bộ, bộ dữ liệu và từ điển để hỗ trợ các nhà phát triển sẵn sàng sử dụng cấu trúc dữ liệu

Trong bài viết này, tôi sẽ cố gắng giải thích tại sao và khi nào nên sử dụng từ điển Python, đồng thời cung cấp cho bạn một số gợi ý về cách sử dụng đúng các phương thức từ điển

Hãy cùng tìm hiểu chi tiết về từ điển Python với các ví dụ và giải thích từng bước

Từ điển Python là gì?

Tóm lại, một từ điển có thể được định nghĩa là một tập hợp dữ liệu được lưu trữ trong các cặp khóa/giá trị. Khóa phải là loại dữ liệu bất biến (chẳng hạn như chuỗi, số nguyên hoặc bộ), trong khi các giá trị trong từ điển có thể là bất kỳ loại dữ liệu Python nào

Khóa trùng lặp không được phép. Nếu cùng một khóa được sử dụng hai lần trong cùng một từ điển thì lần xuất hiện cuối cùng sẽ ghi đè lần xuất hiện đầu tiên

Dữ liệu được lưu trữ trong từ điển có thể được sửa đổi để chúng được gọi là đối tượng có thể thay đổi. Chúng không có thứ tự, điều đó có nghĩa là thứ tự mà chúng tôi đã chỉ định các mục không được duy trì. (Chúng được đặt hàng trong phiên bản 3. 7 trở đi)

Vì chúng năng động, chúng có thể phát triển hoặc co lại khi cần thiết

Khi nào nên sử dụng Từ điển Python?

Bây giờ bạn đã biết từ điển Python là gì, đã đến lúc khám phá thời điểm sử dụng chúng trong mã của bạn

Đây là danh sách giúp bạn hiểu khi nào nên sử dụng từ điển Python;

  • Khi dữ liệu có một tham chiếu duy nhất có thể được liên kết với giá trị
  • Khi truy cập nhanh vào các mục dữ liệu là quan trọng. Từ điển được thiết kế để cho phép chúng tôi tìm thấy một giá trị ngay lập tức mà không cần tìm kiếm trong toàn bộ bộ sưu tập
  • Khi thứ tự dữ liệu không quan trọng
  • Vì từ điển có thể thay đổi, không nên sử dụng từ điển để lưu trữ dữ liệu không nên sửa đổi ngay từ đầu
  • Khi xem xét bộ nhớ không phải là yếu tố quan trọng đối với ứng dụng. So với danh sách và bộ dữ liệu, từ điển chiếm nhiều không gian hơn trong bộ nhớ

Làm cách nào để tạo từ điển Python?

Có nhiều cách tạo và khởi tạo từ điển. Như được hiển thị trong đoạn mã bên dưới, cách dễ nhất để tạo từ điển là sử dụng trực tiếp phương thức dict() trong dấu ngoặc nhọn;

Nếu bạn có hai đối tượng có thể lặp lại (ví dụ: đối tượng danh sách), bạn có thể sử dụng hàm zip() để tạo từ điển. Xem ví dụ bên dưới;

Phương thức fromkeys() là một cách khác để tạo từ điển. Nó nhận một đối tượng có thể lặp lại và tạo một từ điển có giá trị được chỉ định như trong đoạn mã bên dưới;

Hiểu từ điển Python là gì?

Khả năng hiểu từ điển Python cung cấp một cách tạo từ điển tao nhã. Chúng làm cho mã của bạn dễ đọc hơn và Pythonic hơn. Chúng rút ngắn mã cần thiết trong quá trình khởi tạo từ điển và chúng có thể được sử dụng để thay thế vòng lặp 'for'

Cú pháp chung để hiểu từ điển là

dictionary = {key:value for (key, value) in iterable}

Thêm điều kiện để hiểu từ điển

Bạn có thể mở rộng việc sử dụng khả năng hiểu từ điển với các câu điều kiện. Bạn có thể thấy bên dưới việc sử dụng nhiều câu điều kiện 'if', 'else-if' trong cách hiểu từ điển;

Độ phức tạp về thời gian của các phép toán từ điển

Việc lấy, đặt và xóa một mục trong từ điển có độ phức tạp về thời gian là O(1), điều đó có nghĩa là cho dù từ điển của bạn lớn đến đâu thì thời gian để truy cập một mục là không đổi

Lặp lại một từ điển có độ phức tạp thời gian O(n) có nghĩa là thời gian cần thiết để thực hiện tác vụ này tỷ lệ tuyến tính với số mục có trong từ điển

Cách truy cập các giá trị trong từ điển

Nếu bạn cố gắng truy cập một phần tử bằng khóa không tồn tại trong từ điển của mình, bạn sẽ gặp lỗi KeyError. Biết cách thích hợp để truy cập các phần tử bên trong từ điển là rất quan trọng để không có KeyErrors trong thời gian chạy

Để tránh KeyError, hãy truy cập các phần tử của từ điển bằng phương thức get(). Ngoài ra, bạn có thể kiểm tra sự tồn tại của khóa bằng từ khóa 'in'

Làm cách nào để chèn một mục vào từ điển?

Không có phương pháp add(), insert() hoặc append() nào mà bạn có thể sử dụng để thêm mục vào từ điển của mình. Thay vào đó, bạn phải tạo một khóa mới để lưu trữ giá trị trong từ điển của mình. Nếu khóa đã tồn tại trong từ điển thì giá trị sẽ bị ghi đè

Đoạn mã bên dưới hiển thị nhiều ví dụ về việc thêm các mục vào từ điển của bạn;

Các phương pháp từ điển là gì?

Có nhiều phương thức chứa trong từ điển Python giúp bạn thực hiện các tác vụ khác nhau trên các đối tượng từ điển. Tôi liệt kê chúng dưới đây với các định nghĩa ngắn gọn của chúng;

  • popitem(). Xóa mục cuối cùng khỏi từ điển
  • pop(khóa, giá trị mặc định). Xóa và trả về một phần tử từ từ điển cho khóa đã cho
  • phím(). Trả lại chìa khóa
  • giá trị(). Trả lại các giá trị
  • mặt hàng(). Trả về các cặp khóa-giá trị của từ điển
  • nhận (khóa [, giá trị]). Trả về giá trị cho khóa đã chỉ định nếu khóa nằm trong từ điển
  • fromkeys(khóa, giá trị). Trả về một từ điển với các khóa được chỉ định và giá trị được chỉ định
  • setdefault (khóa, giá trị). Trả về giá trị của mục với khóa được chỉ định. Nếu khóa không tồn tại, hãy chèn khóa có giá trị đã chỉ định
  • cập nhật (có thể lặp lại). Chèn các mục đã chỉ định vào từ điển nếu khóa không có trong từ điển, nếu không nó sẽ cập nhật giá trị
  • sao chép(). Trả về một bản sao nông của từ điển
  • xa lạ(). Xóa tất cả các mục khỏi từ điển

Làm cách nào để xóa một mục khỏi từ điển?

Để xóa một mục khỏi đối tượng từ điển, bạn có thể sử dụng từ khóa ‘del’ hoặc phương thức pop(). Ngoài ra, bạn có thể sử dụng khả năng hiểu từ điển để xóa các mục của từ điển. Kiểm tra đoạn mã bên dưới để biết cách triển khai các phương pháp đó với các ví dụ;

Làm thế nào để sao chép từ điển?

Bạn có thể sử dụng phương thức copy() để lấy một bản sao nông của một từ điển hiện có. Một bản sao nông có nghĩa là một từ điển mới sẽ được phổ biến với các tham chiếu đến các đối tượng trong từ điển hiện có

Để tạo một bản sao sâu, hãy ‘sao chép. nên sử dụng phương pháp deepcopy(dict)'. Nó tạo ra một bản sao hoàn toàn độc lập của từ điển gốc với tất cả các yếu tố của nó

Xem bên dưới để hiểu cách bạn có thể triển khai các phương pháp sao chép nông và sao chép sâu trên các đối tượng từ điển;

Làm thế nào để hợp nhất từ ​​điển?

Bạn có thể hợp nhất từ ​​điển với chức năng tùy chỉnh có chứa dict. sao chép () và dict. cập nhật() phương pháp

Trong Trăn 3. 5 trở đi, bạn có thể hợp nhất các từ điển bằng cách giải nén chúng bằng toán tử '**'

Cách hợp nhất từ ​​điển đơn giản và dễ dàng nhất là sử dụng toán tử hợp nhất '. ' có sẵn trong Python 3. 9+

Đoạn mã bên dưới hiển thị các triển khai của tất cả các phương pháp trên với các ví dụ;

Làm cách nào để sắp xếp các mục trong từ điển?

Từ điển Python không có thứ tự cho đến phiên bản 3. 7 nên ngay cả khi bạn sắp xếp các cặp (khóa, giá trị), bạn sẽ không thể lưu trữ chúng trong từ điển bằng cách giữ nguyên thứ tự. Để duy trì thứ tự, chúng ta có thể lưu trữ từ điển đã sắp xếp trong một OrderedDict

Xem bên dưới để khám phá cách bạn có thể sắp xếp từ điển theo khóa và theo giá trị;

Làm thế nào để lặp qua một từ điển?

phương pháp từ điển Python; . Bạn có thể sử dụng chúng trong các vòng lặp for để duyệt qua các từ điển

Ngoài ra, khả năng hiểu từ điển cũng có thể được sử dụng để lặp lại như hình bên dưới;

Kết luận và rút ra chính

Vì cấu trúc dữ liệu là phần cơ bản trong chương trình của chúng ta, điều thực sự quan trọng là phải hiểu rõ về từ điển Python để tạo chương trình hiệu quả

Lợi thế của việc sử dụng từ điển Python là gì?

Từ điển Python giúp đọc và thay đổi dữ liệu dễ dàng hơn, do đó khiến dữ liệu dễ thực hiện hơn cho mô hình dự đoán . Từ điển Python là một tập hợp các giá trị dữ liệu không có thứ tự. Không giống như các kiểu dữ liệu khác chỉ chứa một giá trị dưới dạng phần tử, từ điển Python chứa một khóa. cặp giá trị.

Từ điển có hiệu quả hơn danh sách trong Python không?

Từ điển là 6. Nhanh hơn 6 lần so với danh sách khi chúng tôi tra cứu 100 mục .

Tại sao từ điển nhanh hơn danh sách Python?

trong một danh sách, bạn đang xử lý các mảng, có nghĩa là vòng lặp for phải bắt đầu ở chỉ mục 0 bên trong danh sách của bạn để lặp qua mọi bản ghi. từ điển chỉ cần tìm cặp khóa->giá trị được đề cập trong lần 'đi vòng' đầu tiên và trả lại, do đó tốc độ. Cảm ơn

Sự khác biệt chính giữa từ điển và danh sách là gì?

Danh sách đề cập đến một tập hợp các cặp giá trị chỉ mục khác nhau giống như trong trường hợp của một mảng trong C++. Từ điển đề cập đến cấu trúc được băm gồm nhiều cặp khóa và giá trị khác nhau . Trong bài viết này, chúng ta sẽ thảo luận tương tự ở dạng bảng.