Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのNamedtuple


NamedTupleは、collectionsモジュールの下にある別のクラスです。ディクショナリタイプのオブジェクトと同様に、キーが含まれており、いくつかの値にマップされます。この場合、キーとインデックスを使用して要素にアクセスできます。

最初に使用するには、コレクションの標準ライブラリモジュールをインポートする必要があります。

import collections

このセクションでは、NamedTupleクラスのいくつかの関数について説明します。

NamedTupleのアクセス方法

NamedTupleから、インデックス、キー、およびgetattr()メソッドを使用して値にアクセスできます。 NamedTupleの属性値は順序付けられています。したがって、インデックスを使用してそれらにアクセスできます。

NamedTupleは、フィールド名を属性として変換します。したがって、getattr()を使用すると、その属性からデータを取得できます。

サンプルコード

import collections as col
#create employee NamedTuple
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
#Add two employees
e1 = Employee('Asim', 'Delhi', '25000')
e2 = Employee('Bibhas', 'Kolkata', '30000')
#Access the elements using index
print('The name and salary of e1: ' + e1[0] + ' and ' + e1[2])
#Access the elements using attribute name
print('The name and salary of e2: ' + e2.name + ' and ' + e2.salary)
#Access the elements using getattr()
print('The City of e1 and e2: ' + getattr(e1, 'city') + ' and ' + getattr(e2, 'city'))

出力

The name and salary of e1: Asim and 25000
The name and salary of e2: Bibhas and 30000
The City of e1 and e2: Delhi and Kolkata

NamedTupleの変換手順

他のコレクションをNamedTupleに変換する方法がいくつかあります。 _make()メソッドを使用して、list、tupleなどの反復可能なオブジェクトをNamedTupleオブジェクトに変換できます。

辞書型オブジェクトをNamedTupleオブジェクトに変換することもできます。この変換には、**演算子が必要です。

NamedTupleは、キー付きの値をOrderedDictタイプのオブジェクトとして返すことができます。 OrderedDictにするには、_asdict()メソッドを使用する必要があります。

サンプルコード

import collections as col
#create employee NamedTuple
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
#List of values to Employee
my_list = ['Asim', 'Delhi', '25000']
e1 = Employee._make(my_list)
print(e1)
#Dict to convert Employee
my_dict = {'name':'Bibhas', 'city' : 'Kolkata', 'salary' : '30000'}
e2 = Employee(**my_dict)
print(e2)
#Show the named tuple as dictionary
emp_dict = e1._asdict()
print(emp_dict)
として表示します

出力

Employee(name='Asim', city='Delhi', salary='25000')
Employee(name='Bibhas', city='Kolkata', salary='30000')
OrderedDict([('name', 'Asim'), ('city', 'Delhi'), ('salary', '25000')])

NamedTupleでのいくつかの追加操作

_fields()や_replace()のような他のメソッドがあります。 _fields()メソッドを使用して、NamedTupleのさまざまなフィールドを確認できます。 _replace()メソッドは、他の値の値を置き換えるために使用されます。

サンプルコード

import collections as col
#create employee NamedTuple
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
#Add an employees
e1 = Employee('Asim', 'Delhi', '25000')
print(e1)
print('The fields of Employee: ' + str(e1._fields))
#replace the city of employee e1
e1 = e1._replace(city='Mumbai')
print(e1)

出力

Employee(name='Asim', city='Delhi', salary='25000')
The fields of Employee: ('name', 'city', 'salary')
Employee(name='Asim', city='Mumbai', salary='25000')

  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. PostgreSqlデータベースにPythonタプルを挿入する方法は?

    PostgreSqlデータベースはデフォルトでポート番号5432にインストールされています。PostgreSqlへのPythonインターフェースは、psycopg2モジュールをインストールすることで提供されます。テストデータベースと、fname、sname、age、gender、salaryフィールドを持つemployeeテーブルが利用可能であると仮定します。 最初に接続を確立し、Pythonスクリプトのステートメントに従ってカーソルオブジェクトを取得します。 import psycopg2 conn = psycopg2.connect(database = "test"