2013-05-23 2 views
3

사전 (특히 Python에서 항목의 순서를 결정하는 것은 다른 언어에도 적용될 수 있지만)은 무엇입니까? 예 :파이썬에서 사전의 데이터 순서를 나타내는 것은 무엇입니까?

>>> spam = {'what':4, 'shibby':'cream', 'party':'rock'} 
>>> spam 
{'party': 'rock', 'what': 4, 'shibby': 'cream'} 

스팸을 다시 요청하면 해당 항목은 계속 동일한 순서로 표시됩니다. 그러나이 순서는 어떻게 결정됩니까? 파이썬 docs에 따르면

답변

1

,

사전은 때때로 "연관 기억"또는 "연관 배열"로 다른 언어에서 발견된다. 숫자 범위로 으로 인덱싱 된 시퀀스와 달리 사전은 불변 유형이 될 수있는 키로 인덱싱됩니다. 문자열과 숫자는 항상 키가 될 수 있습니다.

그들은 문서에서 다시 인해 임의 있습니다

사전 적의 키가 거의 임의의 값입니다. 해시 가능하지 않은 값, 즉 목록, 사전 또는 다른 변경 가능 유형 (객체 ID가 아닌 값으로 비교되는)을 포함하는 값은 키로 사용할 수 없습니다. 키에 사용되는 숫자 형식은 숫자 비교를위한 일반적인 규칙을 따르며 두 개의 숫자가 (예 : 1과 1.0)을 비교하면 동일한 사전 항목 을 서로 교환하여 사용할 수 있습니다. (근사치로 컴퓨터 저장소 부동 소수점 숫자 이후이 같은 에게 사전 키를 사용하는 것이 현명하다, 그러나합니다.)

1

일반 사전의 순서는 내부 해시 값을 기반으로, 당신 때문에 그것에 대해 어떤 가정도하지 말아야한다.

제어하는 ​​순서가 사전 인 collections.OrderedDict을 사용하십시오.

0

사전 키는 해시 테이블에 저장되기 때문에. http://en.wikipedia.org/wiki/Hash_table에 따르면 :

해시 테이블에 저장된 항목은 효율적으로 (항목 당 일정한 비용으로) 열거되지만 의사 임의 순서로만 열거 할 수 있습니다.

관련 문제