Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Named Tuple ใน Python: Tuple ที่มีชื่อฟิลด์

Tuple ธรรมดาใช้ index เข้าถึงค่า ซึ่งอ่านยากและง่ายผิดพลาด Named Tuple แก้ปัญหานี้โดยให้ชื่อฟิลด์แต่ละตำแหน่ง

Tuple ธรรมดา vs Named Tuple

>> # Tuple ธรรมดา
>>> student = (1, "Ravi", 23, 546)
>>> rollno = student[0]
>>> name = student[1]
>>> age = student[2]
>>> marks = student[3]

# Named Tuple
>>> from collections import namedtuple
>>> Student = namedtuple('Student', ['rollno', 'name', 'age', 'marks'])
>>> s1 = Student(1, "Ravi", 23, 546)
>>> s1
Student(rollno=1, name='Ravi', age=23, marks=546)
>>> s1.rollno, s1.name, s1.age, s1.marks
(1, 'Ravi', 23, 546)

คุณสมบัติ Named Tuple

  • เข้าถึงค่าได้ทั้ง ชื่อฟิลด์ (s1.name) และ index (s1[1])
  • Immutable เหมือน tuple ธรรมดา
  • มี memory footprint ต่ำกว่า class ปกติ
  • มี docstring และ representation อ่านง่าย
  • รองรับ _replace() สร้าง instance ใหม่บางฟิลด์เปลี่ยน
  • รองรับ _asdict() แปลงเป็น OrderedDict

ตัวอย่างเพิ่มเติม

>> s1._replace(marks=600)
Student(rollno=1, name='Ravi', age=23, marks=600)

>>> s1._asdict()
OrderedDict([('rollno', 1), ('name', 'Ravi'), ('age', 23), ('marks', 546)])

>>> # สร้างจาก iterable
>>> Student._make([2, "Priya", 22, 580])
Student(rollno=2, name='Priya', age=22, marks=580)