IT박스

언제, 왜 사전 대신 명명 된 튜플을 사용해야합니까?

itboxs 2020. 5. 30. 22:28
반응형

언제, 왜 사전 대신 명명 된 튜플을 사용해야합니까? [복제]


가능한 중복 :
파이썬에서 "명명 된 튜플"이란 무엇입니까?

명명 된 튜플을 사용해야하는 상황은 무엇입니까?

내가 살펴 보았을 때 튜플을 사전처럼 만드는 방법처럼 보였습니다. 사전과 어떻게 비교합니까?

사전에 동일한 해시 가능 유형 만 명명 된 튜플에 사용할 수 있습니까?


에서 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}

마지막으로 namedtuples는 regular와 달리 순서가 지정 dict되므로 a와 달리 필드를 정의한 순서대로 항목을 가져옵니다 dict.


이름이 있든 없든 튜플은 변경할 수 없습니다. namedtuple인덱스 대신 이름을 사용하여 액세스를보다 편리하게 만듭니다. 에 유효한 식별자 만 사용할 수 있으며 namedtuple해싱을 수행하지 않습니다. 대신 새 유형을 생성합니다.

참고 URL : https://stackoverflow.com/questions/9872255/when-and-why-should-i-use-a-namedtuple-instead-of-a-dictionary

반응형