반응형
사전 대신 명명된 튜플을 사용해야 하는 시기와 이유는 무엇입니까?
표준 라이브러리namedtuple
클래스는 튜플을 사전처럼 만드는 방법처럼 보입니다.안녕하세요namedtuple
와의 비교dict
s? 언제 사용해야 하나요?비해시블 타입으로 동작합니까?
인dict
s. 해시 가능한 것은 키뿐이며 값은 없습니다. 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
는 일반과 달리 순서가 매겨져 있습니다.dict
s, 즉 필드를 정의한 순서대로 항목을 가져옵니다.dict
.
이름이 있든 없든 튜플은 불변이다. namedtuple
는 색인 대신 이름을 사용하여 접근을 더욱 편리하게 할 뿐입니다.유효한 식별자만 사용할 수 있습니다.namedtuple
해시를 수행하지 않습니다.대신 새로운 유형을 생성합니다.
언급URL : https://stackoverflow.com/questions/9872255/when-and-why-should-i-use-a-namedtuple-instead-of-a-dictionary
반응형
'source' 카테고리의 다른 글
PHP는 에 상당합니다.NET/Java의 toString() (0) | 2023.01.29 |
---|---|
루프 후 문자열 버퍼/빌더 지우기 (0) | 2023.01.29 |
vuejs v-for에 :key 속성이 필요한 이유는 무엇입니까? (0) | 2023.01.29 |
PHP 기본 도메인/url을 가져오는 방법 (0) | 2023.01.29 |
최대 날짜를 기준으로 그룹화 (0) | 2023.01.29 |