2013-03-10 2 views
15

을 namedtuple, 나는 튜플 및변환 목록에 파이썬 3에서

Row = namedtuple('Row', ['first', 'second', 'third']) 
A = ['1', '2', '3'] 

가 어떻게라는 이름의 튜플에이 배열을 삽입 할 다음과 같이 배열 A이? 당신은 어떤 풀고 인수를 사용 Row(*A)을 할 수

newRow = Row('1', '2', '3') 

내가 시도 다른 방법

1. newRow = Row(Row(x) for x in A) 
2. newRow = Row() + data    # don't know if it is correct 

답변

39

: 내 상황에서 내가 직접이 작업을 수행 할 수 없습니다.

>>> from collections import namedtuple 
>>> Row = namedtuple('Row', ['first', 'second', 'third']) 
>>> A = ['1', '2', '3'] 
>>> Row(*A) 
Row(first='1', second='2', third='3') 

참고하여 린터가 밑줄로 시작하는 방법을 사용하는 방법에 대해 너무 많이 불평하지 않는 경우 것으로, namedtuple_make classmethod 대체 생성자를 제공합니다.

>>> Row._make([1, 2, 3]) 
밑줄 접두사가 너희를 속이는하지 마십시오

-이 는 등,이 클래스에 대한 문서화 된 API의 일부이며 모든 파이썬 구현에 거기에 의존 할 수 있습니다 ...

1

명명 된 튜플 서브 클래스에는 '_make'라는 메서드가 있습니다. 명명 된 튜플에 배열 (파이썬 목록) 삽입 '_make'메서드를 사용하면 쉽습니다.

>>> from collections import namedtuple 
>>> Row = namedtuple('Row', ['first', 'second', 'third']) 
>>> A = ['1', '2', '3'] 
>>> Row._make(A) 
Row(first='1', second='2', third='3') 

>>> c = Row._make(A) 
>>> c.first 
'1' 
관련 문제