Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 명명된 튜플

<시간/>

NamedTuple은 컬렉션 모듈 아래의 또 다른 클래스입니다. 사전 유형 개체와 마찬가지로 여기에는 키가 포함되며 일부 값에 매핑됩니다. 이 경우 키와 인덱스를 사용하여 요소에 액세스할 수 있습니다.

처음에 그것을 사용하려면 컬렉션 표준 라이브러리 모듈을 가져와야 합니다.

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() 메서드는 목록, 튜플 등과 같은 반복 가능한 개체를 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')