HomeLập trìnhPythonCác ví dụ...

Các ví dụ về NamedTuple trong Python – Cách tạo và làm việc với NamedTuples


Trong Python, có thể bạn sẽ sử dụng một bộ để khởi tạo một chuỗi không được sửa đổi ở bất kỳ đâu trong chương trình. Điều này là do các bộ dữ liệu là bất biến.

Tuy nhiên, việc sử dụng một bộ có thể làm giảm khả năng đọc mã của bạn vì bạn không thể mô tả ý nghĩa của từng mục trong bộ. Đây là nơi NamedTuples có thể hữu ích.

NamedTuple cung cấp tính bất biến của một bộ, đồng thời làm cho mã của bạn dễ hiểu và dễ sử dụng.

Trong hướng dẫn này, bạn sẽ học cách tạo và sử dụng NamedTuples một cách hiệu quả.

Python Tuples – Tóm tắt nhanh

Trước khi chuyển sang NamedTuples, hãy nhanh chóng xem lại các bộ dữ liệu Python.

Tuples là cấu trúc dữ liệu tích hợp mạnh mẽ trong Python. Chúng tương tự như danh sách Python ở chỗ chúng có thể chứa các mục thuộc các loại khác nhau và ở chỗ bạn có thể cắt qua chúng.

Tuy nhiên, bộ dữ liệu khác với danh sách ở chỗ chúng bất biến. Nó nghĩa là bạn không thể sửa đổi một bộ dữ liệu hiện có và cố gắng làm như vậy sẽ gây ra lỗi.

▶ Giả sử hôm nay bạn tạo bộ dữ liệu sau. tuple house chứa năm mục mô tả ngôi nhà, cụ thể là thành phố, quốc gia, năm xây dựng, diện tích tính bằng ft vuông và số phòng mà ngôi nhà có. Điều này được hiển thị trong đoạn mã dưới đây:

house = ("Bangalore","India",2020,2018,4)
  • Cái này house được đặt tại thành phố Bangalore ở Ấn Độ.
  • Nó được xây dựng vào năm 2020.
  • Và nó đã 4 các phòng chung trải rộng trên một diện tích 2018 ft vuông

Giả sử bạn của bạn đọc dòng mã này hoặc bạn quay lại sau một tuần và đọc lại mã của mình. Cho rằng bạn chưa thêm bất kỳ nhận xét nào về giá trị trong bộ giá trị đại diện cho điều gì, chắc chắn có vấn đề về khả năng đọc.

Ví dụ: cuối cùng, bạn có thể phải đoán xem đó là ngôi nhà có diện tích 2018 mét vuông được xây dựng vào năm 2020 hay đó là ngôi nhà có diện tích 2020 mét vuông được xây dựng vào năm 2018. 🤔

Đọc thêm  Cách duy trì khả năng mở rộng trong mã Python của bạn

Thay vào đó, bạn có thể đề xuất sử dụng từ điển – bạn có thể chỉ định các giá trị khác nhau đại diện cho phím của từ điển và thật sự các giá trị như từ điển giá trị.

Chuyển sang phần tiếp theo để biết tóm tắt nhanh về từ điển Python.

Từ điển Python – Tóm tắt nhanh

Với động lực cải thiện khả năng đọc mã, hãy xem xét chuyển sang từ điển Python.

Từ điển là cấu trúc dữ liệu tích hợp lưu trữ giá trị trong cặp khóa-giá trị. Bạn có thể nhấn vào một từ điển và truy cập các giá trị của nó bằng các phím.

Vì vậy, bạn có thể viết lại bộ từ trước dưới dạng từ điển như sau:

house = {"city":"Bangalore","country":"India","year":2020,"area":2018,"num_rooms":4}

Trong đoạn mã trên:

  • "city", "country", "year", "area""num_rooms" là chìa khóa.
  • Và các giá trị từ Tuple, "Bangalore", "India", 2020, 20184 được sử dụng làm giá trị tương ứng với các khóa.
  • Bạn có thể truy cập các giá trị bằng các phím: house["city"] để có được "Bangalore", house["area"] để có được 2018và như thế.

Như bạn có thể thấy, việc sử dụng từ điển sẽ cải thiện khả năng đọc mã. Tuy nhiên, không giống như các bộ dữ liệu, bạn luôn có thể sửa đổi các giá trị trong từ điển.

Tất cả những gì bạn cần làm là đặt khóa tương ứng thành một giá trị khác.

Trong ví dụ trên, bạn có thể sử dụng house["city"] = "Delhi" để thay đổi thành phố mà ngôi nhà của bạn tọa lạc. Rõ ràng, điều này là không được phép, vì bạn không muốn các giá trị được sửa đổi ở nơi khác trong chương trình.

Và nếu bạn cần lưu trữ các mô tả cho nhiều ngôi nhà như vậy, bạn sẽ phải tạo từ điển bằng số lượng ngôi nhà có, lặp lại tên của các khóa mỗi lần. Điều này cũng làm cho mã của bạn lặp đi lặp lại và không thú vị lắm!

Với NamedTuples của Python, bạn có thể có cả tính bất biến của bộ dữ liệu và khả năng đọc của từ điển.

Đi đến phần tiếp theo để tìm hiểu về NamedTupleS.

Cú pháp Python NamedTuple

Để sử dụng một NamedTuplebạn cần nhập nó từ mô-đun bộ sưu tập tích hợp sẵn của Python, như được hiển thị:

from collections import namedtuple

Cú pháp chung để tạo NamedTuple như sau:

namedtuple(<Name>,<[Names of Values]>)
  • <Name> là trình giữ chỗ cho những gì bạn muốn gọi là NamedTuple của mình và
  • <[Names of Values]> là một trình giữ chỗ cho danh sách chứa tên của các giá trị hoặc thuộc tính khác nhau.
Đọc thêm  Các phương thức danh sách Python – append() so với extension() trong Python được giải thích bằng các ví dụ về mã

Bây giờ bạn đã quen thuộc với cú pháp tạo NamedTuples, hãy xây dựng trên house và thử tạo nó dưới dạng NamedTuple.

Ví dụ Python NamedTuple

Như đã đề cập trước đó, bước đầu tiên là nhập namedtuple.

from collections import namedtuple

Bây giờ, bạn có thể tạo một NamedTuple bằng cú pháp đã thảo luận trong phần trước:

House = namedtuple("House",["city","country","year","area","num_rooms"])

Trong ví dụ này,

  • Bạn chọn gọi NamedTuple House
  • Đề cập đến tên của các giá trị, "city", "country", "year", "area""num_rooms" trong một danh sách.

✅ Và bạn đã tạo NamedTuple đầu tiên của mình – House.

Bây giờ, bạn có thể tạo một ngôi nhà house_1 với các thông số kỹ thuật cần thiết bằng cách sử dụng House như sau:

house_1 = House("Bangalore","India",2020,2018,4)

Bạn chỉ cần chuyển vào các giá trị thực mà tên hoặc thuộc tính trong <[Names of Values]> nên lấy.

Để tạo một ngôi nhà khác, hãy nói house_2tất cả những gì bạn cần làm là tạo một cái mới House sử dụng các giá trị của nó.

house_2 = House("Chennai","India",2018,2050,3)

Lưu ý cách bạn có thể sử dụng House làm mẫu để tạo bao nhiêu ngôi nhà tùy thích mà không cần phải nhập tên của các thuộc tính mỗi khi bạn tạo một ngôi nhà mới.

Cách sử dụng dot Ký hiệu để truy cập các giá trị của NamedTuple

Khi bạn đã tạo các đối tượng NamedTuple house_1house_2bạn có thể dùng dot ký hiệu để truy cập các giá trị của họ. Cú pháp được hiển thị dưới đây:

<namedtuple_object>.<value_name>
  • Đây, <namedtuple_object> biểu thị đối tượng NamedTuple đã tạo. Trong ví dụ này, house_1house_2.
  • <value_name> biểu thị bất kỳ tên hợp lệ nào được sử dụng khi NamedTuple được tạo. Trong ví dụ này, "city", "country", "year", "area""num_rooms" là những lựa chọn hợp lệ cho <value_name>.

Điều này được minh họa trong đoạn mã sau:

print(house_1.city)
print(house_1.country)
print(house_1.year)
print(house_1.area)
print(house_1.num_rooms)
hình ảnh-33

Tương tự, bạn có thể sử dụng house_2.city, house_2.countryv.v. để truy cập các giá trị tương ứng với NamedTuple house_2.

📋Hãy tự mình trải nghiệm! NamedTuple Ví dụ

Trong phần này, bạn sẽ tạo một ProblemSet Được đặt tênTuple.

Đọc thêm  strftime() Python – Hướng dẫn định dạng ngày giờ

Vui lòng thử ví dụ này trong bất kỳ IDE nào bạn chọn.

Các ProblemSet NamedTuple sẽ nhận các giá trị sau:

  • num_questions: một số nguyên đại diện cho số lượng câu hỏi trong một bộ vấn đề cụ thể,
  • difficulty: một chuỗi cho biết mức độ khó khăn của bộ vấn đề, và
  • topic: chủ đề mà tập hợp vấn đề bao trùm, chẳng hạn, "Arrays", "Strings", "Graphs"và như thế.

Quy trình này rất giống với ví dụ trước của chúng tôi, nơi chúng tôi đã tạo House Được đặt tênTuple.

1️⃣ Nhập khẩu namedtuple từ collections mô-đun.

from collections import namedtuple

2️⃣ Tạo một NamedTuple và gọi nó ProblemSet.

ProblemSet = namedtuple("ProblemSet",["num_questions","difficulty","topic"])

3️⃣ Bây giờ bạn đã tạo ProblemSetbạn có thể tạo bất kỳ số lượng tập hợp vấn đề nào bằng cách sử dụng ProblemSet như khuôn mẫu.

  • Đây, problem_set1 chứa 5 câu hỏi dễ dàng trên Strings.
problem_set1 = ProblemSet(5,"Easy","Strings")
  • problem_set2 chứa 3 câu hỏi khó trên Bit Manipulation.
problem_set2 = ProblemSet(3,"Hard","Bit Manipulation")

4️⃣ Cũng như ví dụ trước, bạn có thể sử dụng dot ký hiệu để truy cập các giá trị của hai bộ vấn đề được tạo ở trên.

print(problem_set1.topic)

# Output
Strings
print(problem_set2.difficulty)

# Output
Hard

Tôi hy vọng bạn có thể hoàn thành bài tập này. 🎉

Phần kết luận

Trong hướng dẫn này, bạn đã học được:

  • cách NamedTuples giúp bạn kết hợp các ưu điểm của cả bộ dữ liệu và từ điển,
  • cách tạo NamedTuples và
  • cách sử dụng dot ký hiệu để truy cập các giá trị của NamedTuples.

Nếu bạn đã quen thuộc với OOP trong Python, bạn có thể thấy điều này tương tự như cách các lớp Python hoạt động. Một lớp với các thuộc tính của nó phục vụ như một khuôn mẫu mà từ đó bạn có thể tạo bao nhiêu đối tượng hoặc thể hiện – mỗi đối tượng có các giá trị riêng cho các thuộc tính.

Tuy nhiên, việc tạo một lớp và xác định các thuộc tính bắt buộc chỉ để cải thiện khả năng đọc mã của bạn thường có thể là quá mức cần thiết và thay vào đó, việc tạo NamedTuples sẽ dễ dàng hơn rất nhiều.

Hẹn gặp lại tất cả các bạn trong bài hướng dẫn tiếp theo. Cho đến lúc đó, mã hóa vui vẻ!



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