HOWTO · Python

Python で名前付きタプル

このチュートリアルでは、名前付きタプル、その使用時期と使用方法、および Python での通常のタプルと名前付きタプルの違いについて説明します。

この記事では、名前付きタプル、その使用時期と使用方法、および Python での通常のタプルと名前付きタプルの違いについて説明します。

Python の名前付きタプルとは

名前付きタプルは、タプルのすべての機能を備えた特別な種類のタプルです。名前付きタプルは Python 2.6 で導入されました。辞書と同じように、名前付きタプルにはキーと値のペアが含まれています。

値には、そのキーとインデックスを使用してアクセスできます。これは、C 言語の構造体に似ています。

Python での単純なタプルと名前付きタプルの違い

Named Tuple は、単純なタプルのオブジェクト表現です。これは、ファクトリ関数を使用してプログラムで作成された名前付き変数を持つ単純なタプルのサブクラスです。

名前付きタプルの参照変数でドット演算子を使用し、参照変数でアイテムのインデックスを使用することにより、名前付きタプルのアイテムにアクセスできます。単純なタプルでは、​​アイテムのインデックスと参照変数のみを使用してアクセスできます。

Python で単純なタプルの代わりに名前付きタプルを使用する場合

コードをクリーンでわかりやすく、より pythonic に見せたい場合は、単純なタプルの代わりに名前付きタプルを使用します。

たとえば、辞書の場合、person.ageperson.age よりもきれいに見えます。また、単純なタプルの場合、person.ageperson[1] よりもきれいに見えます。

Python で名前付きタプルを使用する方法

名前付きタプルを生成するには、最初に、コレクションモジュール内のファクトリ関数である namedtuple() をインポートします。ファクトリ関数は、さまざまなプロトタイプのクラスを製造するために使用される関数です。

このファクトリ関数を使用して、クラスの名前と属性を指定します。したがって、一般的な構文は次のとおりです。

Class_Name = namedtuple('Class_Name', ['field_1', 'field_2', ....., 'field_n'])

次に、クラスをインスタンス化できます。クラスをインスタンス化すると、オブジェクトが作成され、対応するフィールドに値が割り当てられます。

したがって、一般的な構文は次のとおりです。

Ref_Variable_Name = Class_Name('Value_1', 'Value_2', ....., 'Value_n')

ドット表記を使用して、特定のフィールドの値にアクセスできます。したがって、一般的な構文は次のとおりです。

Ref_Variable_Name.field_name

次の完全なサンプルコードでは、クラスの名前は Person であり、その属性は nameage です。次に、クラス Person のインスタンス p1 を作成します。

現在、このインスタンス p1 は名前付きタプルです。オブジェクト表記を使用し、コード内の参照変数を使用したインデックスによってクラス変数にアクセスしました。

ただし、オブジェクト表記はより明確で理解しやすいものであり、これが名前付きタプルの背後にある動機です。

サンプルコード:

# python 3.x
from collections import namedtuple

Person = namedtuple("Person", ["name", "age"])
p1 = Person("Jhon", "20")
print("Accessing values using index:")
print("Person Name:", p1[0])
print("Person Age:", p1[1])
print("Accessing Values using key:")
print("Person Name:", p1.name)
print("Person Age:", p1.age)

出力:

# python 3.x
Accessing values using index:
Person Name: Jhon
Person Age: 20
Accessing Values using key:
Person Name: Jhon
Person Age: 20