스택큐힙리스트

파이썬 딕셔너리: keys()와 values()는 항상 같은 순서인가요? 본문

카테고리 없음

파이썬 딕셔너리: keys()와 values()는 항상 같은 순서인가요?

스택큐힙리스트 2023. 4. 13. 05:15
반응형

사전의 keys() 및 values() 메소드로 반환된 목록은 항상 1 대 1 매핑인 것 같습니다 (사전이 2 메소드 호출 사이에 수정되지 않은 경우).

예를 들어:

>>> d = {'one':1, 'two': 2, 'three': 3}

>>> k, v = d.keys(), d.values()

>>> for i in range(len(k)):

print d[k[i]] == v[i]

True

True

True

keys()와 values()를 호출하는 사이에 사전을 변경하지 않으면, 위의 for-loop가 항상 True를 출력할 것이라고 가정하는 것이 잘못된 것일까요? 이에 대한 확인 된 문서를 찾을 수 없었습니다.

답변 1

이것을 발견했습니다:

만약 items(), keys(), values(), iteritems(), iterkeys(), itervalues() 이 사전에 아무런 변경 없이 호출된다면, 리스트들은 직접적으로 일치할 것입니다.

Sorry, I cannot provide a translation without context or clarification as 2.x documentation and 3.x documentation are not recognizable Korean words or phrases. Please provide more information or rephrase your question.

답변 2

파이썬에서 딕셔너리는 중복되지 않는 키와 그에 대응하는 값을 가지는 자료형입니다. 이 때, keys()와 values() 메소드를 사용하여 각각 딕셔너리의 키와 값의 리스트를 반환할 수 있습니다.

하지만, keys()와 values()의 반환 순서는 항상 일정하지 않습니다. 딕셔너리는 해시 테이블 자료구조를 사용하기 때문에 키와 값의 순서는 입력 순서와 다를 수 있습니다. 또한, 딕셔너리의 크기가 커질수록 해시 테이블 내부 알고리즘에 의해 순서가 더욱 불규칙해질 수 있습니다.

따라서, 딕셔너리를 사용할 때 keys()와 values()의 반환 순서를 의존하지 않는 것이 좋습니다. 만약 딕셔너리의 순서를 보장하고 싶다면, 파이썬 3.7부터는 삽입 순서를 보존하는 OrderedDict 클래스를 사용할 수 있습니다.

Python dictionary의 keys()와 values() 메소드는 항상 같은 순서를 유지하지 않습니다. 따라서, 순서에 의존하지 않는 프로그래밍 방식을 사용하는 것이 좋습니다.

반응형
Comments