Hiểu từ điển Python

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách hiểu từ điển Python và cách sử dụng nó với sự trợ giúp của các ví dụ.

Từ điển là kiểu dữ liệu trong Python cho phép chúng ta lưu trữ dữ liệu trong cặp khóa / giá trị . Ví dụ:

 my_dict = (1: 'apple', 2: 'ball') 

Để tìm hiểu thêm về chúng, hãy truy cập: Từ điển Python

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

Đọc hiểu từ điển là một cách đơn giản và ngắn gọn để tạo từ điển.

Ví dụ 1: Hiểu từ điển

Hãy xem xét đoạn mã sau:

 square_dict = dict() for num in range(1, 11): square_dict(num) = num*num print(square_dict) 

Bây giờ, hãy tạo từ điển trong chương trình trên bằng cách sử dụng từ điển hiểu.

 # dictionary comprehension example square_dict = (num: num*num for num in range(1, 11)) print(square_dict) 

Đầu ra của cả hai chương trình sẽ giống nhau.

 (1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100)

Trong cả hai chương trình, chúng tôi đã tạo một từ điển square_dictvới cặp khóa / giá trị số bình phương .

Tuy nhiên, sử dụng tính năng hiểu từ điển cho phép chúng tôi tạo từ điển trong một dòng duy nhất .

Sử dụng tính năng hiểu từ điển

Từ ví dụ trên, chúng ta có thể thấy rằng việc hiểu từ điển nên được viết theo một mẫu cụ thể.

Cú pháp tối thiểu để hiểu từ điển là:

 từ điển = (khóa: giá trị cho các vars ở dạng có thể lặp lại) 

Hãy so sánh cú pháp này với cách hiểu từ điển từ ví dụ trên.

Bây giờ, hãy xem cách chúng ta có thể sử dụng tính năng hiểu từ điển bằng cách sử dụng dữ liệu từ một từ điển khác.

Ví dụ 3: Cách sử dụng tính năng hiểu từ điển

 #item price in dollars old_price = ('milk': 1.02, 'coffee': 2.5, 'bread': 2.5) dollar_to_pound = 0.76 new_price = (item: value*dollar_to_pound for (item, value) in old_price.items()) print(new_price) 

Đầu ra

 ('sữa': 0,7752, 'cà phê': 1,9, 'bánh mì': 1,9) 

Ở đây, chúng tôi có thể thấy rằng chúng tôi đã truy xuất giá mặt hàng bằng đô la và chuyển đổi chúng sang bảng Anh. Sử dụng từ điển để hiểu giúp công việc này trở nên đơn giản và ngắn gọn hơn nhiều.

Điều kiện trong hiểu từ điển

Chúng tôi có thể tùy chỉnh thêm khả năng hiểu từ điển bằng cách thêm các điều kiện cho nó. Hãy xem một ví dụ.

Ví dụ 4: Nếu hiểu từ điển có điều kiện

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) even_dict = (k: v for (k, v) in original_dict.items() if v % 2 == 0) print(even_dict) 

Đầu ra

 ('jack': 38, 'michael': 48) 

Như chúng ta có thể thấy, chỉ những mục có giá trị chẵn mới được thêm vào, vì ifmệnh đề trong từ điển hiểu.

Ví dụ 5: Nhiều nếu hiểu từ điển có điều kiện

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) new_dict = (k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40) print(new_dict) 

Đầu ra

 ('john': 33) 

Trong trường hợp này, chỉ những mục có giá trị lẻ nhỏ hơn 40 mới được thêm vào từ điển mới.

Đó là vì có nhiều ifmệnh đề trong cách hiểu từ điển. Chúng tương đương với andhoạt động trong đó cả hai điều kiện phải đúng.

Ví dụ 6: Hiểu từ điển có điều kiện if-else

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) new_dict_1 = (k: ('old' if v> 40 else 'young') for (k, v) in original_dict.items()) print(new_dict_1) 

Đầu ra

 ('jack': 'young', 'michael': 'old', 'Guido': 'old', 'john': 'young') 

Trong trường hợp này, một từ điển mới được tạo thông qua tính năng hiểu từ điển.

Các mặt hàng có giá trị từ 40 trở lên có giá trị 'già' trong khi các mặt hàng khác có giá trị 'trẻ'.

Hiểu từ điển lồng nhau

Chúng ta có thể thêm phần hiểu từ điển vào phần hiểu từ điển để tạo từ điển lồng nhau. Hãy xem một ví dụ.

Ví dụ 7: Từ điển lồng nhau với hai từ điển hiểu

 dictionary = ( k1: (k2: k1 * k2 for k2 in range(1, 6)) for k1 in range(2, 5) ) print(dictionary) 

Đầu ra

 (2: (1: 2, 2: 4, 3: 6, 4: 8, 5: 10), 3: (1: 3, 2: 6, 3: 9, 4: 12, 5: 15), 4: (1: 4, 2: 8, 3: 12, 4: 16, 5: 20)) 

As you can see, we have constructed a multiplication table in a nested dictionary, for numbers from 2 to 4.

Whenever nested dictionary comprehension is used, Python first starts from the outer loop and then goes to the inner one.

So, the above code would be equivalent to:

 dictionary = dict() for k1 in range(11, 16): dictionary(k1) = (k2: k1*k2 for k2 in range(1, 6)) print(dictionary) 

It can further be unfolded:

 dictionary = dict() for k1 in range(11, 16): dictionary(k1) = dict() for k2 in range(1, 6): dictionary(k1)(k2) = k1*k2 print(dictionary) 

All these three programs give us the same output.

Advantages of Using Dictionary Comprehension

As we can see, dictionary comprehension shortens the process of dictionary initialization by a lot. It makes the code more pythonic.

Using dictionary comprehension in our code can shorten the lines of code while keeping the logic intact.

Warnings on Using Dictionary Comprehension

Mặc dù tính năng hiểu từ điển rất tốt để viết mã thanh lịch dễ đọc, nhưng chúng không phải lúc nào cũng là lựa chọn phù hợp.

Chúng ta phải cẩn thận khi sử dụng chúng như:

  • Đôi khi chúng có thể làm cho mã chạy chậm hơn và tiêu tốn nhiều bộ nhớ hơn.
  • Chúng cũng có thể làm giảm khả năng đọc của mã.

Chúng ta không được cố gắng điều chỉnh một logic khó hiểu hoặc một số lượng lớn các từ điển có thể hiểu được bên trong chúng chỉ vì mục đích làm cho mã được xếp thành hàng. Trong những trường hợp này, tốt hơn là chọn các lựa chọn thay thế khác như vòng lặp.

thú vị bài viết...