2016-08-16 3 views
4
exampleDict = {'a':1, 'b':2, 'c':3, 'd':4} 

위의 사전이 처음이 순서를 통해 반복 : 다음내부 사전 순서를 변경할 수 있습니까?

b=2 
d=4 
a=1 
c=3 

, 내 코드에서 파일의 톤 주위에 이동, 지금은이 순서를 반복 :

d=4 
a=1 
c=3 
b=2 

주문이 내부적으로 해시 맵으로 저장된다는 것을 알고 있지만 내부 주문을 변경하려면 어떻게해야합니까?

편집 : 나는 명령을 보존 할 필요가 없으므로 사전을 사용하도록 할 것입니다. 왜 그런 일이 일어 났는지 궁금합니다. 나는 질서가 보장되지 않는다고 생각했지만, 일단 그것의 임의의 내적 질서가 생기면, 그것은 미래의 반복을 위해 그걸 고수한다.

+1

이것은 귀하의 질문에 대한 답변이 아니지만 주문에 신경 쓰면 '사전'을 사용해서는 안됩니다. –

+0

삽입 순서에 따라 반복되는 순서가 변경 될 수 있습니다. 또한, 바람의 방향. 결과는 이전과 같은 순서로 출력되며'b = 2'가 끝까지 이동합니다. –

+0

삽입 순서에 따라 항목이 변경 될 수 있습니다 (해시 충돌로 인해). 내가 궁금한 점은 왜 그것이 중요한 것인가? – AndyG

답변

5

DICT는 고정 된 순서가없는 OrderedDict 클래스를 확인해보세요

CPython의 구현 세부 사항 : 키와 값이 나열되어 있습니다 비 랜덤 임의 순서는 Python 구현에 따라 다르며 사전의 삽입 내역 및 삭제에 따라 다릅니다.

당신이 정말로 그것을 주문한 유지해야하는 경우, OrderedDict를라는 개체가 있습니다 :

from collections import OrderedDict 
exampleDict = OrderedDict({'a':1, 'b':2, 'c':3, 'd':4}) 

또한 당신이 그 (것)들을 주문하려는 이유에 대한 호기심

-1

예. dict에 대한 다른 호출 사이에서 코드를 변경하면 반복 순서가 변경됩니다. 항목() 키() 값() iteritems는() iterkeys() 및 itervalues ​​()가 사전에 전혀 간섭 수정리스트로 불리는 경우 docs

가입일

직접 대응합니다.

삽입 물질의 순서는, documentation에서

+0

* "예. 다른 dict 호출 사이의 코드를 변경하면 반복 순서가 변경됩니다."* 정의 된 곳, 왜 'time.time()'을 호출하면 임의의 dict 순서가 바뀌는 지 알려주세요. –

+0

감사합니다. 제 문장이 더 명확해야합니다. 사전을 수정하면 해당 명령은 변화. – RahulHP

관련 문제