2017-03-15 6 views
4

나는 순서가 지정된 사전을 가지고 있으며, 기본적으로 마지막 (키, 값)이 삽입 된 순서대로 역순으로 처리하려고합니다.반전 됨 OrderedDict TypeError

dicts = OrderedDict() 
... 
for key, value in reversed(dicts.items()): 

위의 코드는 내가 파이썬 3.5.1와 PyCharm를 사용할 때 잘 작동하지만 내가 codefights에 배치 할 때, (정확한 버전을 확인하지 않음) 자신의 파이썬 3 인터프리터를 사용하여, 나는 오류 발생에 대한 아래 얻을 for 루프 구현 :

왜이 오류가 발생하며 어떻게 해결할 수 있습니까?

+0

나는'dicts.items()'가리스트 또는 튜플로 형 변환되어야한다고 믿는다. –

답변

9

the docs에 따라 OrderedDict.items()은 3.5에서 reversed 만 지원하므로 이전 버전 일 것으로 기대합니다.

for key, value in reversed(list(dicts.items())): 
    ... 

NB : 코멘트에 따라, dicts.items() 효율적인 메모리가해야하지만 list(dicts.items()) 확실히 길이 수에 새 목록을 만들 것입니다 당신이 그것을 고칠 수

한 가지 방법은 먼저 목록에 변환입니다 dicts의 항목 중 대부분 괜찮 으면 좋겠지 만, 매우 큰 경우 dicts 이것은 중요한 O (N) 메모리 사용량이 표시됩니다.

+0

이전 버전에서 작동하게하는 가장 좋은 방법은 무엇입니까? – user1179317

+1

'list' 변환은'dicts.items()'호출보다 메모리 효율이 떨어 집니까? 'dicts.items()'가 생성기가 아닙니다. –

+0

좋은 지적입니다. 잘 모르겠습니다. – daphtdazz