Python のコレクション モジュールには、「Namedtuple」と呼ばれる機能があります。「Namedtuple」は、コードの表現力を高めるための名前付き要素を含むタプルです。 Python の辞書と同じように、「Namedtuple」を使用すると、インデックスの代わりにタプルのメンバーを使用して要素にアクセスできます。
Python のコレクション モジュールには、「Namedtuple」と呼ばれる機能があります。「Namedtuple」は、コードの表現力を高めるための名前付き要素を含むタプルです。 Python の辞書と同様に、「Namedtuple」を使用すると、インデックスの代わりにタプルのメンバーを使用して要素にアクセスできます。
名前付きタプルを作成するには、コレクション モジュールで関数「namedtuple」を使用する必要があります。
from collections import namedtuple # Define a employee tuple that has fields id, name and location. Employee = namedtuple ('Employee', 'id name location') # Create instances of Employee employee1 = Employee (id=10, name='John Doe', location='Atlanta') employee2 = Employee (id=11, name='Mick', location='Dallas')
「Namedtuple」は、要素にアクセスするための二重メカニズムを提供します。まず、属性名を介して要素にアクセスでき、2 番目のメカニズムでは従来の数値インデックスが使用されます。
print(f"{employee1.name} - {employee1.location}") # John Doe - Atlanta print(f"{employee2.name} - {employee2.location}") # Mick – Dallas
要素には、数値インデックスを使用してアクセスすることもできます。
print(f"{employee1[1]} - {employee1[2]}") # John Doe - Atlanta print(f"{employee2[1]} - {employee2[2]}") # Mick – Dallas
不変性は「名前付きタプル」の基本的なプロパティであり、通常のタプルから継承されます。これは、作成時にフィールドの値が設定されると、その値を変更できないことを意味します。
try: employee1.name = 'David' except AttributeError as e: print(f"AttributeError: {e}") # AttributeError: can't set attribute
"Namedtuple" は、データを構造化するためのクリーンで読みやすい方法を提供するだけでなく、 "Namedtuple" の機能を強化するいくつかの便利なメソッドも提供します。
a) _asdict(): _asdict() メソッドは名前付きタプルを辞書形式で返し、「名前付きタプル」を他のデータ構造と互換性のある形式に変換する便利な方法を提供します。
employee1._asdict() # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
b) _replace(): _replace() メソッドは、指定されたフィールドを新しい値に置き換えて、「Namedtuple」の新しいインスタンスを作成します。このアプローチは、変更を許可しながら不変性を維持するために重要です。
employee1_modified = employee1._replace(location='DFW') employee1_modified # Employee(id=10, name='John Doe', location='DFW')
c) _make(): _make(iterable) メソッドは、反復可能なオブジェクトから「namedtuple」の新しいインスタンスを作成します。たとえば、_make() メソッドを使用してリストから Namedtuple を作成できます。
employee_list = [21, 'Bob','Gallup'] Employee._make(employee_list) # Employee(id=21, name='Bob', location='Gallup')
アンパック プロセスを通じて、Python の「Namedtuple」を使用すると、単一の簡潔なステートメントで値を個々の変数に割り当てることができます。
id, name, location = employee1 print(f"id: {id}, name: {name}, location:{location}")
「名前付きタプル」を別のデータ構造に変換する
list() コンストラクターを使用して、名前付き タプル をリストに変換できます。以下に例を示します。
list(employee1) # [10, 'John Doe', 'Atlanta']
"_asdict()" メソッドを使用して、名前付きタプルを辞書に変換できます。このメソッドは、通常の辞書に変換できる OrderedDict を返します。以下に例を示します。
dict(employee1._asdict()) # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
可読性:「Namedtuple」は、要素に意味のある名前を付けることでコードをより読みやすくします。インデックスベースのアクセスが必要です。
変数: 通常のタプルと同様、「名前付きタプル」は不変です。一度作成すると、その値は変更できません。
メモリ効率: 「名前付きタプル」はメモリ効率が高く、同等のクラスよりも占有するスペースが少なくなります。 Namedtuple で得られるメモリ効率は、多数のインスタンスが関係するシナリオや大規模なデータ セットを扱う場合によく見られることに注意することが重要です。
軽量データ構造: カスタム メソッドを使用しない単純なクラスの作成に最適です。
データ ストレージ: 特に完全なクラスが必要ない場合に、構造化データを保存するのに便利です。
API およびデータベース レコード: データベースから返されたレコード、または API から受信したデータを表すために使用されます。 Python の
"Namedtuple" は、構成設定など、名前付きフィールドを含むシンプルで
不変のデータ構造が必要なシナリオに最適です。わかりやすくし、使いやすくするために、名前付きフィールドの構成設定があります。
データベース レコード: 「Namedtuple」はデータベース レコードを表すことができ、どのフィールドがテーブル内のどの列に対応するかを明確にします。
コマンド ライン解析: "Namedtuple" を使用して、解析されたコマンド ライン パラメータを保存し、入力パラメータの明確な構造を提供します。
名前付き定数: 「Namedtuple」を使用すると、コード内で名前付き定数を表すことができ、定数値を定義する明確で読みやすい方法を提供します。
「Namedtuple」は、明瞭さ、可読性、不変性を提供することでこれらのシナリオに優れており、簡潔に構造化されたデータのための貴重なツールとなります。
以上がPython 名前付きタプルを使用してコードの明瞭さを強化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。