Từ điển là cấu trúc dữ liệu tích hợp mạnh mẽ trong Python lưu trữ dữ liệu dưới dạng cặp khóa-giá trị. Tính năng Hiểu từ điển có thể cực kỳ hữu ích trong việc tạo từ điển mới từ các từ điển và từ điển lặp hiện có.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách hoạt động của tính năng hiểu từ điển trong Python bằng cách mã hóa một số ví dụ đơn giản.
Từ điển trong Python là gì?
Từ điển trong Python cho phép chúng tôi lưu trữ một loạt ánh xạ giữa hai tập hợp giá trị, cụ thể là phím và giá trị.
- Tất cả các mục trong từ điển được đặt trong một cặp dấu ngoặc nhọn
{}
. - Mỗi mục trong từ điển là ánh xạ giữa khóa và giá trị – được gọi là giá trị cốt lõi đôi.
- Cặp khóa-giá trị thường được gọi là từ điển mục.
- Bạn có thể truy cập các giá trị này bằng các phím tương ứng.
Đây là một ví dụ chung về từ điển:
my_dict = {"key1":<value1>,"key2":<value2>,"key3":<value3>,"key4":<value4>}
Trong ví dụ trên,
- Từ điển
my_dict
chứa 4 cặp khóa-giá trị (mục). "key1"
xuyên qua"key4"
là 4 phím.- Bạn có thể dùng
my_dict["key1"]
để truy cập<value1>
,my_dict["key2"]
để truy cập<value2>
và như thế.
Bây giờ chúng ta đã biết từ điển Python là gì, hãy tiếp tục tìm hiểu về Từ điển hiểu.
Cách sử dụng khả năng hiểu từ điển để tạo từ điển Python từ một Iterable
Trong phần này, hãy sử dụng khả năng hiểu từ điển để tạo một từ điển Python từ một danh sách có thể lặp lại, chẳng hạn như một danh sách hoặc một bộ.
Chúng ta có thể tạo một từ điển Python mới chỉ bằng một lần lặp nếu chúng ta chọn tạo các khóa hoặc giá trị một cách nhanh chóng.
Khi chúng tôi chọn tạo các giá trị một cách nhanh chóng, chúng tôi có thể sử dụng các mục trong khả năng lặp lại làm khóa và ngược lại.
Cú pháp chung được hiển thị dưới đây. Xin lưu ý rằng các tên giữa <> là phần giữ chỗ cho tên biến thực tế.
<dict_name> = {<new_key>:<new_value> for <item> in <iterable>}
Hãy phân tích cú pháp trên.
{}
chỉ ra rằng chúng tôi đang điền vào một từ điển.- Đối với mỗi mục trong iterable, chúng tôi tạo một cặp khóa-giá trị trong từ điển.
▶ Thời gian cho một ví dụ nhanh.
Hiểu từ điển Python – Ví dụ 1
Giả sử chúng ta có danh sách khách hàng ghé thăm cửa hàng và chúng ta muốn giảm giá ngẫu nhiên cho từng khách hàng. Chúng tôi muốn giá trị giảm giá nằm trong khoảng từ $1 đến $100.
Trong Python,
random.randint(i,j)
trả về một số nguyên ngẫu nhiên giữai
vàj
trong đó bao gồm cả hai điểm cuối.
Vì vậy, chúng ta có thể sử dụng randint()
chức năng từ mô-đun ngẫu nhiên của Python để tạo chiết khấu từ $1 đến $100 cho mọi khách hàng trong danh sách của chúng tôi.
Đoạn mã sau đây cho thấy cách chúng ta có thể tạo discount_dict
tân điển, từ danh sách khách hàng.
import random
customers = ["Alex","Bob","Carol","Dave","Flow","Katie","Nate"]
discount_dict = {customer:random.randint(1,100) for customer in customers}
print(discount_dict)
#Output
{'Alex': 16, 'Bob': 26, 'Carol': 83, 'Dave': 21, 'Flow': 38, 'Katie': 47, 'Nate': 89}
Ví dụ trên thực hiện như sau:
- Lặp qua danh sách khách hàng (
customers
), - Sử dụng tên của từng khách hàng làm khóa và
- Tạo chiết khấu ngẫu nhiên từ $1 đến $100 làm giá trị so với khóa.
Cách sử dụng khả năng hiểu từ điển để tạo từ điển Python từ hai lần lặp
Điều gì sẽ xảy ra nếu chúng ta đã có các lần lặp được xác định trước có chứa các khóa và giá trị? Giả sử, bạn có hai danh sách, list_1
và list_2
– với list_1
chứa phím và list_2
chứa tương ứng giá trị.
Bây giờ chúng ta có thể sử dụng Python zip()
nén hai danh sách này để tạo các cặp khóa-giá trị.
Lưu ý: Các
zip
hàm lấy một chuỗi các lần lặp làm đối số và trả về một trình lặp gồm các bộ, như minh họa trong hình bên dưới.

Vì vậy, bộ đầu tiên là cặp khóa-giá trị đầu tiên, bộ thứ hai là cặp khóa-giá trị thứ hai và nói chung, bộ thứ i là cặp khóa-giá trị thứ i.
Trong trường hợp này, việc hiểu từ điển có dạng sau:
<dict_name> = {<new_key>:<new_value> for (key,value) in zip(list1,list2)}
Phân tích cú pháp trên khá đơn giản.
- Các khóa và giá trị có sẵn dưới dạng các bộ vì chúng tôi đã nén chúng lại với nhau bằng cách sử dụng
zip()
chức năng. - Bây giờ, chúng tôi lặp qua bộ lặp này để lấy các cặp khóa-giá trị cho từ điển của chúng tôi.
▶ Đã đến lúc cho một ví dụ nhanh khác.
Hiểu từ điển Python – Ví dụ 2
Giả sử chúng ta muốn tạo một từ điển về nhiệt độ hàng tuần trong thành phố của mình. Ngày phải là khóa và nhiệt độ (tính bằng độ C) tương ứng với ngày phải là giá trị.
Giả sử chúng ta có ngày và nhiệt độ trong hai danh sách như hình bên dưới.
days = ["Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
temp_C = [30.5,32.6,31.8,33.4,29.8,30.2,29.9]
Bây giờ chúng ta có thể tiến hành sử dụng khả năng hiểu từ điển để tạo từ điển nhiệt độ hàng tuần.
# Creating a dictionary of weekly tempertaures
# from the list of temperatures and days
weekly_temp = {day:temp for (day,temp) in zip(days,temp_C)}
print(weekly_temp)
# Output
{'Sunday': 30.5, 'Monday': 32.6, 'Tuesday': 31.8, 'Wednesday': 33.4, 'Thursday': 29.8, 'Friday': 30.2, 'Saturday': 29.9}
Trong ví dụ trên, chúng tôi đã sử dụng zip()
có chức năng nén các danh sách ngày và nhiệt độ lại với nhau. Giờ đây, chúng ta có thể truy cập vào từ điển bằng cách sử dụng bất kỳ ngày nào làm phím để lấy nhiệt độ vào ngày đó, như minh họa bên dưới:
weekly_temp["Thursday"]
# Output
29.8
Cách sử dụng Phương thức items() trên Từ điển Python
Cho đến giờ, chúng ta đã biết cách sử dụng các phím để truy cập các giá trị. Làm cách nào để chúng tôi truy cập tất cả các cặp khóa-giá trị trong từ điển?
Để làm điều này, chúng ta có thể gọi items()
trên từ điển để lấy tất cả các cặp khóa-giá trị, như được hiển thị trong đoạn mã bên dưới.
discount_dict.items()
# Output
dict_items([('Alex', 16), ('Bob', 26), ('Carol', 83), ('Dave', 21), ('Flow', 38), ('Katie', 47), ('Nate', 89)])
Cách sử dụng khả năng hiểu từ điển để tạo từ điển Python từ một từ điển hiện có
Giả sử chúng ta đã có một từ điển Python. 📚
Tuy nhiên, chúng tôi muốn tạo ra một Mới từ điển chỉ chứa các mục từ từ điển của chúng tôi đáp ứng một điều kiện cụ thể. Tính năng Đọc hiểu Từ điển có thể thực sự hữu ích trong việc này.
<dict_name> = {<new_key>:<new_value> for (key,value) in <dict>.items() if <condition>}
Hãy phân tích cú pháp trên. chúng tôi sử dụng items()
và lấy tất cả các cặp khóa-giá trị trong từ điển hiện có.
- Chúng tôi truy cập mục từ điển đầu tiên và kiểm tra xem
condition
đánh giá đểTrue
. - Nếu điều kiện là
True
chúng tôi thêm mục đầu tiên vào từ điển mới của mình. - Sau đó, chúng tôi lặp lại các bước này cho tất cả các mục trong từ điển hiện có.
▶ Hãy lấy một ví dụ để xem nó hoạt động như thế nào.
Hiểu từ điển Python – Ví dụ 3
Hãy xây dựng trên ví dụ giảm giá trước đó, nơi chúng tôi đã tạo discount_dict
từ điển. Hãy nhìn vào của chúng tôi discount_dict
lại từ điển.
{'Alex': 16, 'Bob': 26, 'Carol': 83, 'Dave': 21, 'Flow': 38, 'Katie': 47, 'Nate': 89}
Chúng tôi thấy rằng một số khách hàng đã may mắn được chiết khấu cao hơn những khách hàng khác. Hãy giải quyết sự chênh lệch này và làm hài lòng tất cả khách hàng của chúng tôi. 😀
Giờ đây, chúng tôi muốn cung cấp cho những khách hàng được giảm giá dưới 30 đô la, giảm giá 10% cho lần mua hàng tiếp theo của họ. ✨
Trong trường hợp này, chúng tôi đang tạo một từ điển mới customer_10
từ của chúng tôi discount_dict
từ điển.
customer_10 = {customer:discount for (customer, discount) in discount_dict.items() if discount<30}
print(customer_gifts)
# Output
{'Alex': 16, 'Bob': 26, 'Dave': 21}
Đoạn mã trên thực hiện như sau:
- Đối với mỗi mục trong của chúng tôi
discount_dict
nó chạm vào giá trị của chiết khấu. - Nếu giảm giá ít hơn $30, nó sẽ thêm tương ứng
customer:discount
ghép nối với từ điển mới của chúng tôicustomer_10
.
Nhận thấy như thế nào Alex
, Bob
và Dave
những người được giảm giá ít hơn $30 đã được thêm vào từ điển mới.
Phần kết luận
Hãy tóm tắt những gì chúng ta đã học được trong hướng dẫn này. Chúng ta đã thấy cách sử dụng Tính năng Hiểu từ điển để tạo từ điển Python từ:
- chỉ có một lần lặp,
- hai lần lặp và
- một từ điển hiện có sử dụng các điều kiện để lọc qua các mục.
Cảm ơn bạn đã đọc. Chúc bạn học tập vui vẻ!🎉
bài viết liên quan
Đây là một bài viết giải thích hoạt động của hàm zip() của Python.