source

사전 대신 명명된 튜플을 사용해야 하는 시기와 이유는 무엇입니까?

manycodes 2023. 1. 29. 20:20
반응형

사전 대신 명명된 튜플을 사용해야 하는 시기와 이유는 무엇입니까?

표준 라이브러리namedtuple클래스는 튜플을 사전처럼 만드는 방법처럼 보입니다.안녕하세요namedtuple와의 비교dicts? 언제 사용해야 하나요?비해시블 타입으로 동작합니까?

dicts. 해시 가능한 것은 키뿐이며 값은 없습니다. 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)

에서 Atribute를 설정한 후에도 Atribute를 변경하지 않고 대신 사용할 수 있습니다.

Container = namedtuple('Container', ['name', 'date', 'foo', 'bar'])

mycontainer = Container(name, date, foo, bar)

대체품으로서.

물론, 당신은 많은 것들을 만들 수 있습니다.dict각 키에서 동일한 키를 사용했지만 유효한 Python 식별자만 키로 사용할 수 있고 가변성이 필요하지 않다고 가정하면,

mynamedtuple.fieldname

보다 예쁘다

mydict['fieldname']

그리고.

mynamedtuple = MyNamedTuple(firstvalue, secondvalue)

보다 예쁘다

mydict = {'fieldname': firstvalue, 'secondfield': secondvalue}

마침내.namedtuple는 일반과 달리 순서가 매겨져 있습니다.dicts, 즉 필드를 정의한 순서대로 항목을 가져옵니다.dict.

이름이 있든 없든 튜플은 불변이다. namedtuple는 색인 대신 이름을 사용하여 접근을 더욱 편리하게 할 뿐입니다.유효한 식별자만 사용할 수 있습니다.namedtuple해시를 수행하지 않습니다.대신 새로운 유형을 생성합니다.

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

반응형