HomeLập trìnhPythonTừ điển Python...

Từ điển Python 101: Giới thiệu trực quan chi tiết


Chào mừng

Trong bài viết này, bạn sẽ học cách làm việc với từ điển Python, một kiểu dữ liệu tích hợp cực kỳ hữu ích mà bạn chắc chắn sẽ sử dụng trong các dự án của mình.

Đặc biệt, bạn sẽ học được:

  • Từ điển được sử dụng để làm gì và các đặc điểm chính của chúng.
  • Tại sao chúng lại quan trọng đối với các dự án lập trình của bạn.
  • “Giải phẫu” của từ điển: khóa, giá trị và cặp khóa-giá trị.
  • Các quy tắc cụ thể xác định xem một giá trị có thể là khóa hay không.
  • Cách truy cập, thêm, sửa đổi và xóa các cặp khóa-giá trị.
  • Cách kiểm tra xem một khóa có trong từ điển hay không.
  • Độ dài của một từ điển đại diện cho điều gì.
  • Cách lặp qua từ điển bằng vòng lặp for.
  • Bạn có thể sử dụng các phương thức từ điển tích hợp nào để tận dụng sức mạnh của loại dữ liệu này.

Ở phần cuối của bài viết này, chúng ta sẽ đi sâu vào một dự án đơn giản để áp dụng kiến ​​thức của bạn: chúng ta sẽ viết một hàm tạo và trả về một từ điển với một mục đích cụ thể.

Hãy bắt đầu nào! ⭐️

🔹 Từ điển theo ngữ cảnh

Hãy bắt đầu bằng cách thảo luận về tầm quan trọng của từ điển. Để minh họa điều này, hãy để tôi so sánh nhanh với một kiểu dữ liệu khác mà bạn có thể đã quen thuộc: danh sách.

Khi bạn làm việc với các danh sách trong Python, bạn có thể truy cập một phần tử bằng cách sử dụng một chỉ mục, một số nguyên mô tả vị trí của phần tử trong danh sách. Các chỉ số bắt đầu từ 0 cho phần tử đầu tiên và tăng thêm một cho mọi phần tử tiếp theo trong danh sách. Bạn có thể xem một ví dụ ngay tại đây:

hinh-51

Nhưng nếu chúng ta cần lưu trữ hai giá trị liên quan và giữ “kết nối” này trong mã thì sao? Ngay bây giờ, chúng tôi chỉ có các giá trị độc lập, duy nhất được lưu trữ trong danh sách.

Giả sử rằng chúng ta muốn lưu trữ tên của các sinh viên và “kết nối” từng tên với điểm của từng sinh viên cụ thể. Chúng tôi muốn giữ “mối liên hệ” giữa chúng. Làm thế nào bạn sẽ làm điều đó trong Python?

Nếu bạn sử dụng danh sách lồng nhau, mọi thứ sẽ trở nên rất phức tạp và không hiệu quả sau khi chỉ thêm một vài mục vì bạn sẽ cần sử dụng hai hoặc nhiều chỉ mục để truy cập từng giá trị, tùy thuộc vào danh sách cuối cùng. Đây là nơi các từ điển Python đến để giải cứu.

Gặp từ điển

Một từ điển Python trông như thế này (xem bên dưới). Với một từ điển, bạn có thể “kết nối” một giá trị với một giá trị khác để thể hiện mối quan hệ giữa chúng trong mã của bạn. Trong ví dụ này,”Gino” được “kết nối” với số nguyên 15 và chuỗi “Nora” được “kết nối” với số nguyên 30.

hình ảnh-48

Hãy xem các yếu tố khác nhau tạo nên một cuốn từ điển.

🔸 “Giải phẫu” của Từ điển Python

Vì một từ điển “kết nối” hai giá trị nên nó có hai loại phần tử:

  • Phím: khóa là một giá trị được sử dụng để truy cập một giá trị khác. Khóa tương đương với “chỉ số” trong chuỗi, danh sách và bộ dữ liệu. Trong từ điển, để truy cập một giá trị, bạn sử dụng khóa, chính nó là một giá trị.
  • giá trị: đây là những giá trị mà bạn có thể truy cập bằng khóa tương ứng của chúng.
Đọc thêm  Cách sử dụng đối tượng timedelta trong Python để làm việc với ngày tháng
hình ảnh-96

Hai yếu tố này tạo nên cái được gọi là cặp khóa-giá trị (một khóa với giá trị tương ứng của nó).

cú pháp

Đây là một ví dụ về Từ điển Python ánh xạ chuỗi “Gino” thành số 15 và chuỗi “Nora” thành số 30:

>>> {"Gino": 15, "Nora": 30}
hình ảnh-49
  • Để tạo một từ điển, chúng tôi sử dụng dấu ngoặc nhọn { } .
  • Giữa các dấu ngoặc nhọn này, chúng tôi viết các cặp khóa-giá trị được phân tách bằng dấu phẩy.
  • Đối với các cặp khóa-giá trị, chúng tôi viết khóa theo sau là dấu hai chấm, dấu cách và giá trị tương ứng với khóa.

💡 Lời khuyên:

  • Vì mục đích dễ đọc và kiểu, bạn nên thêm khoảng trắng sau mỗi dấu phẩy để phân tách các cặp khóa-giá trị.
  • Bạn có thể tạo một từ điển trống với một cặp dấu ngoặc nhọn trống {}.

Quy tắc quan trọng cho các phím

Không phải mọi giá trị đều có thể là khóa trong từ điển Python. Các phím phải tuân theo một bộ quy tắc:

Theo Tài liệu Python:

  • Các khóa phải là duy nhất trong một từ điển.

Tốt nhất là nghĩ về một từ điển như một tập hợp các giá trị cốt lõi cặp, với yêu cầu rằng các khóa là duy nhất (trong một từ điển).

  • Các khóa phải là bất biến.

Không giống như các chuỗi, được lập chỉ mục bởi một dãy số, từ điển được lập chỉ mục bởi phímcó thể là bất kỳ bất biến loại; chuỗi và số luôn có thể là khóa.

  • Nếu khóa là một bộ, nó chỉ có thể chứa các chuỗi, số hoặc bộ.

Các bộ có thể được sử dụng làm khóa nếu chúng chỉ chứa các chuỗi, số hoặc bộ; nếu một bộ chứa bất kỳ đối tượng có thể thay đổi nào trực tiếp hoặc gián tiếp, thì nó không thể được sử dụng làm khóa.

  • Danh sách không thể là khóa vì chúng có thể thay đổi. Đây là hệ quả của quy tắc trước đó.

Bạn không thể sử dụng danh sách làm khóa, vì danh sách có thể được sửa đổi tại chỗ bằng cách sử dụng phép gán chỉ mục, phép gán lát hoặc các phương thức như append()extend().

💡 Ghi chú: Giá trị không có quy tắc cụ thể, chúng có thể là giá trị có thể thay đổi hoặc không thể thay đổi.

🔹 Từ điển trong hành động

Bây giờ hãy xem cách chúng ta có thể làm việc với từ điển trong Python. Chúng tôi sẽ truy cập, thêm, sửa đổi và xóa các cặp khóa-giá trị.

Chúng tôi sẽ bắt đầu làm việc với từ điển này, được gán cho ages Biến đổi:

>>> ages = {"Gino": 15, "Nora": 30}

Truy cập các giá trị bằng cách sử dụng các phím

Nếu chúng ta cần truy cập giá trị được liên kết với một khóa cụ thể, chúng ta viết tên của biến tham chiếu từ điển theo sau là dấu ngoặc vuông [] và, trong dấu ngoặc vuông, khóa tương ứng với giá trị:

<variable>[<key>]
hình ảnh-52

Đây là một ví dụ về cách chúng ta có thể truy cập giá trị tương ứng với chuỗi "Gino":

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Gino"]
15

Lưu ý rằng cú pháp rất giống với việc lập chỉ mục một chuỗi, bộ hoặc danh sách, nhưng bây giờ chúng tôi đang sử dụng khóa làm chỉ mục thay vì một số nguyên.

Nếu chúng tôi muốn truy cập giá trị tương ứng với “Nora”, chúng tôi sẽ làm điều này:

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Nora"]
30

💡 Mẹo: Nếu bạn cố gắng truy cập một khóa không tồn tại trong từ điển, bạn sẽ nhận được một KeyError:

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Talina"]
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    ages["Talina"]
KeyError: 'Talina'

Thêm các cặp khóa-giá trị

Nếu một cặp khóa-giá trị không tồn tại trong từ điển, chúng tôi có thể thêm nó. Để làm điều này, chúng tôi viết biến tham chiếu từ điển theo sau là khóa trong dấu ngoặc vuông, dấu bằng và giá trị mới:

hình ảnh-53

Đây là một ví dụ trong IDLE:

>>> ages = {"Gino": 15, "Nora": 30}

# Add the key-value pair "Talina": 24
>>> ages["Talina"] = 24

# The dictionary now has this key-value pair
>>> ages
{'Gino': 15, 'Nora': 30, 'Talina': 24}

Sửa đổi cặp khóa-giá trị

Để sửa đổi giá trị được liên kết với một khóa cụ thể, chúng tôi sử dụng cùng một cú pháp mà chúng tôi sử dụng để thêm một cặp khóa-giá trị mới, nhưng bây giờ chúng tôi sẽ gán giá trị mới cho một khóa hiện có:

>>> ages = {"Gino": 15, "Nora": 30}

# The key "Gino" already exists in the dictionary, so its associated value
# will be updated to 45.
>>> ages["Gino"] = 45

# The value was updated to 45.
>>> ages
{'Gino': 45, 'Nora': 30}

Xóa cặp khóa-giá trị

Để xóa một cặp khóa-giá trị, bạn sẽ sử dụng del từ khóa theo sau là tên của biến tham chiếu từ điển và, trong dấu ngoặc vuông []khóa của cặp khóa-giá trị:

Đọc thêm  Cách tạo, đọc, cập nhật và tìm kiếm thông qua các tệp Excel bằng Python
hình ảnh-55

Đây là một ví dụ trong IDLE:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

# Delete the key-value pair "Gino": 15.
>>> del ages["Gino"]

# The key-value pair was deleted.
>>> ages
{'Nora': 30, 'Talina': 45}

🔸 Kiểm tra xem Khóa có trong Từ điển không

Đôi khi, việc kiểm tra xem một khóa đã tồn tại trong từ điển có thể rất hữu ích hay chưa (hãy nhớ rằng các khóa phải là duy nhất).

Theo Tài liệu Python:

Để kiểm tra xem một Chìa khóa có trong từ điển, hãy sử dụng in từ khóa.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> "Talina" in ages
True
>>> "Gino" in ages
True
>>> "Lulu" in ages
False

Các in toán tử kiểm tra các khóa, không phải các giá trị. Nếu chúng ta viết điều này:

>>> 15 in ages
False

Chúng tôi đang kiểm tra nếu Chìa khóa 15 là trong từ điển, không phải giá trị. Đây là lý do tại sao biểu thức ước tính thành False.

💡 Mẹo: Bạn có thể dùng in để kiểm tra xem một giá trị có trong từ điển với .values() hay không.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> 30 in ages.values()
True
>>> 10 in ages.values()
False

🔹 Độ dài của Từ điển Python

Độ dài của một từ điển là số cặp khóa-giá trị mà nó chứa. Bạn có thể kiểm tra độ dài của từ điển bằng hàm len() mà chúng ta thường sử dụng, giống như chúng ta kiểm tra độ dài của danh sách, bộ dữ liệu và chuỗi:

# Two key-value pairs. Length 2.
>>> ages = {"Gino": 15, "Nora": 30}
>>> len(ages)
2

# Three key-value pairs. Length 3.
>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> len(ages)
3

🔸 Lặp lại từ điển trong Python

Bạn có thể lặp qua các từ điển bằng vòng lặp for. Có nhiều cách tiếp cận khác nhau để làm điều này và tất cả chúng đều có liên quan như nhau. Bạn nên chọn cách tiếp cận phù hợp nhất với mình, tùy thuộc vào những gì bạn đang cố gắng đạt được.

Tùy chọn đầu tiên – Lặp lại các phím

Chúng ta có thể lặp lại các khóa của một từ điển như thế này:

for <key> in <dictionary>:
	# Do this

Ví dụ:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> for student in ages:
	print(student)
    
Gino
Nora
Talina

Tùy chọn thứ hai – Lặp lại các cặp khóa-giá trị

Để làm điều này, chúng ta cần sử dụng phương thức tích hợp .items(), cho phép chúng ta lặp lại các cặp khóa-giá trị dưới dạng các bộ có định dạng này (key, value).

for <key-value-pair-as-tuple> in <dictionary>.items():
	# Do this

Ví dụ:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

>>> for pair in ages.items():
	print(pair)
	
('Gino', 15)
('Nora', 30)
('Talina', 45)

Tùy chọn thứ ba – Gán các khóa và giá trị cho các biến riêng lẻ

Với các vòng lặp .items() và for, bạn có thể sử dụng sức mạnh của phép gán bộ để gán trực tiếp các khóa và giá trị cho các biến riêng lẻ mà bạn có thể sử dụng trong vòng lặp:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

# Tuple assignment to assign the key to the variable key 
# and the value to the variable value.
>>> for key, value in ages.items():
	print("Key:", key, "; Value:", value)

	
Key: Gino ; Value: 15
Key: Nora ; Value: 30
Key: Talina ; Value: 45

Tùy chọn thứ tư – Lặp lại các giá trị

Bạn có thể lặp lại các giá trị của từ điển bằng phương thức .values().

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> for age in ages.values():
	print(age)

15
30
45

🔹 Phương pháp từ điển

Từ điển bao gồm các phương thức tích hợp rất hữu ích có thể giúp bạn tiết kiệm thời gian và thực hiện các chức năng phổ biến:

.xa lạ()

Phương pháp này loại bỏ tất cả các cặp khóa-giá trị khỏi từ điển.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.clear()
>>> ages
{}

.get(, )

Phương thức này trả về giá trị được liên kết với khóa. Mặt khác, nó trả về giá trị mặc định đã được cung cấp làm đối số thứ hai (đối số thứ hai này là tùy chọn).

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.get("Nora")
30
>>> ages.get("Nor", "Not Found")
'Not Found'

Nếu bạn không thêm đối số thứ hai, điều này tương đương với cú pháp trước đó với dấu ngoặc vuông []mà bạn đã học:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages["Nora"]
30
>>> ages.get("Nora")
30

.pop(, )

Phương thức này loại bỏ cặp khóa-giá trị khỏi từ điển và trả về giá trị.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.pop("Talina")
45
>>> ages
{'Gino': 15, 'Nora': 30}

.update()

Phương pháp này thay thế các giá trị của một từ điển bằng các giá trị của một từ điển khác chỉ dành cho những khóa tồn tại trong cả hai từ điển.

Một ví dụ về điều này sẽ là một cuốn từ điển có điểm ban đầu của ba sinh viên (xem mã bên dưới). Chúng tôi chỉ muốn thay thế điểm của những học sinh đã làm bài kiểm tra bù (trong trường hợp này, chỉ có một học sinh đã làm bài kiểm tra bù, vì vậy các điểm khác sẽ không thay đổi).

>>> grades = {"Gino": 0, "Nora": 98, "Talina": 99}
>>> new_grades = {"Gino": 67}
>>> grades.update(new_grades)
>>> grades
{'Gino': 67, 'Nora': 98, 'Talina': 99}

Bằng cách sử dụng phương thức .update(), chúng ta có thể cập nhật giá trị được liên kết với chuỗi “Gino” trong từ điển gốc vì đây là khóa chung duy nhất trong cả hai từ điển.

Giá trị ban đầu sẽ được thay thế bằng giá trị được liên kết với khóa này trong từ điển được chuyển làm đối số cho .update().

💡 Lời khuyên: Để tìm hiểu thêm về các phương pháp từ điển, tôi khuyên bạn nên đọc bài viết này trong Tài liệu Python.

🔸 Dự án nhỏ – Từ điển tần số

Bây giờ bạn sẽ áp dụng kiến ​​thức của mình bằng cách viết một hàm freq_dict tạo và trả về từ điển với tần suất xuất hiện của từng phần tử trong danh sách, chuỗi hoặc bộ (số lần phần tử xuất hiện). Các phần tử sẽ là khóa và tần số sẽ là giá trị.

Mã số

Chúng tôi sẽ viết hàm từng bước để xem logic đằng sau mỗi dòng mã.

  • Bước 1: Điều đầu tiên chúng ta cần làm là viết tiêu đề hàm. Lưu ý rằng hàm này chỉ nhận một đối số, danh sách, chuỗi hoặc bộ dữ liệu mà chúng ta gọi là data.
def freq_dict(data):
  • Bước 2: Sau đó, chúng ta cần tạo một từ điển trống sẽ ánh xạ từng phần tử của danh sách, chuỗi hoặc bộ với tần số tương ứng của nó.
def freq_dict(data):
	freq = {}
  • Bước 3: Sau đó, chúng ta cần lặp lại danh sách, chuỗi hoặc bộ dữ liệu để xác định phải làm gì với từng phần tử.
def freq_dict(data):
	freq = {}
	for elem in data: 
  • Bước 4: Nếu phần tử đã được đưa vào từ điển, thì phần tử đó xuất hiện nhiều lần và chúng ta cần thêm 1 vào tần số hiện tại của nó. Mặt khác, nếu phần tử chưa có trong từ điển, thì đó là lần đầu tiên nó xuất hiện và giá trị ban đầu của nó phải là 1.
def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
  • Bước 5: Cuối cùng, chúng ta cần trả lại từ điển.
def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

❗️Quan trọng: Vì chúng ta đang gán các phần tử làm khóa của từ điển nên chúng phải thuộc loại dữ liệu bất biến.

ví dụ

Ở đây chúng tôi có một ví dụ về việc sử dụng chức năng này. Lưu ý cách từ điển ánh xạ từng ký tự của chuỗi với số lần xuất hiện của nó.

>>> def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

>>> freq_dict("Hello, how are you?")
{'H': 1, 'e': 2, 'l': 2, 'o': 3, ',': 1, ' ': 3, 'h': 1, 'w': 1, 'a': 1, 'r': 1, 'y': 1, 'u': 1, '?': 1}

Đây là một ví dụ khác được áp dụng cho một danh sách các số nguyên:

>>> def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

>>> freq_dict([5, 2, 6, 2, 6, 5, 2, 2, 2])
{5: 2, 2: 5, 6: 2}

Công việc tuyệt vời! Bây giờ chúng ta có chức năng cuối cùng.

🔹 Tóm lại

  • Từ điển là các kiểu dữ liệu tích hợp trong Python liên kết (ánh xạ) các khóa với các giá trị, tạo thành các cặp khóa-giá trị.
  • Bạn có thể truy cập một giá trị bằng khóa tương ứng của nó.
  • Các khóa phải thuộc loại dữ liệu bất biến.
  • Bạn có thể truy cập, thêm, sửa đổi và xóa các cặp khóa-giá trị.
  • Từ điển cung cấp nhiều phương pháp có thể giúp bạn thực hiện chức năng chung.

Tôi thực sự hy vọng bạn thích bài viết của tôi và thấy nó hữu ích. Bây giờ bạn có thể làm việc với từ điển trong các dự án Python của mình. Kiểm tra các khóa học trực tuyến của tôi. theo tôi trên Twitter. ⭐️





Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status