KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

collections.namedtupleについて

登録日 :2024/10/10 08:44
カテゴリ :Python基礎

namedtupleについてのサンプル

import collections
import csv


with open('names.csv', 'w') as csvfile:
    fieldnames = ['first', 'last', 'address']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'first': 'Mike', 'last': 'Jackson', 'address': 'A'})
    writer.writerow({'first': 'Jun', 'last': 'Sakai', 'address': 'B'})
    writer.writerow({'first': 'Nancy', 'last': 'Mask', 'address': 'C'})

with open('names.csv', 'r') as f:
    csv_reader = csv.reader(f)
    Names = collections.namedtuple('Names', next(csv_reader))
    for row in csv_reader:
        names = Names._make(row)
        print(names.first, names.last, names.address)


# Point = collections.namedtuple('Point', ['x', 'y'])
# p = Point(10, y=20)
# print(p)
# print(p.x)
# print(p._asdict())
#
# p1 = Point._make([100, 200])
# print(p1)
# print(p1._asdict())
#
# p1._replace(x=500)
# print(p1)
# p2 = p1._replace(x=500)
# print(p2)
#
#
# class SumPoint(collections.namedtuple('Point', ['x', 'y'])):
#     @property
#     def total(self):
#         return self.x + self.y
#
#
# p3 = SumPoint(2, 3)
# print(p3.x, p3.y, p3.total)

実行結果

Mike Jackson A
Jun Sakai B
Nancy Mask C