반응형
언제, 왜 사전 대신 명명 된 튜플을 사용해야합니까? [복제]
가능한 중복 :
파이썬에서 "명명 된 튜플"이란 무엇입니까?
명명 된 튜플을 사용해야하는 상황은 무엇입니까?
내가 살펴 보았을 때 튜플을 사전처럼 만드는 방법처럼 보였습니다. 사전과 어떻게 비교합니까?
사전에 동일한 해시 가능 유형 만 명명 된 튜플에 사용할 수 있습니까?
에서 dict
의 만 키는 해쉬 아닌 값을해야합니다. namedtuple
키가 없으므로 해시 가능성은 문제가되지 않습니다.
그러나 키와 동등한 "필드 이름"은 문자열이어야합니다.
기본적으로 다음과 같은 클래스의 인스턴스를 여러 개 만들려는 경우 :
class Container:
def __init__(self, name, date, foo, bar):
self.name = name
self.date = date
self.foo = foo
self.bar = bar
mycontainer = Container(name, date, foo, bar)
그리고 당신이 그들을에서 설정 한 후 속성을 변경하지 __init__
, 당신은 사용을 대신 할 수
Container = namedtuple('Container', ['name', 'date', 'foo', 'bar'])
mycontainer = Container(name, date, foo, bar)
대체품으로.
물론, dict
각각에 동일한 키를 사용 하는 여러 가지를 만들 수 있지만 유효한 파이썬 식별자 만 키로 사용하고 변경이 필요하지 않다고 가정하면,
mynamedtuple.fieldname
보다 더 예쁘다
mydict['fieldname']
과
mynamedtuple = MyNamedTuple(firstvalue, secondvalue)
보다 더 예쁘다
mydict = {'fieldname': firstvalue, 'secondfield': secondvalue}
마지막으로 namedtuple
s는 regular와 달리 순서가 지정 dict
되므로 a와 달리 필드를 정의한 순서대로 항목을 가져옵니다 dict
.
이름이 있든 없든 튜플은 변경할 수 없습니다. namedtuple
인덱스 대신 이름을 사용하여 액세스를보다 편리하게 만듭니다. 에 유효한 식별자 만 사용할 수 있으며 namedtuple
해싱을 수행하지 않습니다. 대신 새 유형을 생성합니다.
반응형
'IT박스' 카테고리의 다른 글
C #에서 참조 유형 변수에 "ref"를 사용하는 것은 무엇입니까? (0) | 2020.05.30 |
---|---|
대문자 또는 소문자 doctype? (0) | 2020.05.30 |
“php artisan dump-autoload”와“composer dump-autoload”의 차이점은 무엇입니까? (0) | 2020.05.30 |
jQuery와 바인딩 된 이벤트를 주문하는 방법 (0) | 2020.05.30 |
뷰 컨트롤러간에 통신하는 가장 좋은 방법은 무엇입니까? (0) | 2020.05.30 |