2010-07-28 6 views
4

몇 가지 조건을 기반으로 파이썬 사전을 채 웁니다.파이썬 사전의 반복

내 질문은 :

우리가 같은 순서로 사전을 검색 할 수가 채워집니다로? 채우는 후

  questions_dict={} 

       data = str(header_arr[opt]) + str(row) 
       questions_dict.update({data : xl_data}) 
       valid_xl_format = 7 
       if (type.lower() == "ma" or type.lower() == "mc"): 
         data = str(header_arr[opt]) + str(row) 
         questions_dict.update({data : xl_data}) 
         valid_xl_format = 7 

그것을 반복하면 그

 for k in questions_dict: 
      logging.debug("%s:%s" %(k,questions_dict[k])) 
+0

왜 사전을 채우는 순서를 추적하고 싶습니까? –

답변

8

사전이 채워지는 순서를 추적하려면 odict 모듈의 코드와 같이 dict (일반적으로 "주문 된 명령"이라고 함)과 다른 유형이 필요합니다. 또는 가능한 경우 Python 2.7, collections.OrderedDict으로 업그레이드하십시오.

+0

삽입하는 동안 두 항목이 동일한 키에 매핑되면 어떻게됩니까? 마지막 삽입을 기억하고 주문을 사용하고 처음 삽입 된 것을 잊어 버렸습니까? 업데이트 :이 솔루션은 찾기 쉽습니다 ... 원래 삽입 위치를 유지합니다. –

2

사전이 정렬되지 않는 모음 채워 순서 아니다. 주문을 추적 할 다른 데이터가 있어야합니다.

0

사전이 효율적이라는 이유는 키가 해시라는 객체에 매핑되고 사전이 키 해시와 관련된 값을 내부적으로 저장한다는 것입니다. 따라서 항목을 반복 할 때 이것은 원래 키가 아니라 해시 순서와 관련이 있습니다.