2012-08-01 8 views
14

중첩 된 사전의 내부 값을 기반으로 Python 사전을 정렬하는 방법은 무엇입니까? 예를 들어중첩 된 사전 값을 기반으로 Python 사전 정렬

, context의 값에 따라 아래 종류의 mydict :

mydict = { 
    'age': {'context': 2}, 
    'address': {'context': 4}, 
    'name': {'context': 1} 
} 

결과는 다음과 같이해야합니다 : 당신은 상관없이 당신이 시도 얼마나 열심히 사전을 정렬 할 수 없습니다

{ 
    'name': {'context': 1}, 
    'age': {'context': 2}, 
    'address': {'context': 4}  
} 
+1

목록 출력을 원하십니까? 또는 사전 출력? – Deniz

답변

15
>>> from collections import OrderedDict 
>>> mydict = { 
     'age': {'context': 2}, 
     'address': {'context': 4}, 
     'name': {'context': 1} 
} 
>>> OrderedDict(sorted(mydict.iteritems(), key=lambda x: x[1]['context'])) 
OrderedDict([('name', {'context': 1}), ('age', {'context': 2}), ('address', {'context': 4})]) 
5

왜냐하면 그들은 순서가없는 컬렉션이기 때문입니다. 대신 OrderedDict 양식 collections 모듈을 사용하십시오.

+0

양자 택일로, 아마도 각 키의 값을보기 위해 람다 (lambda)를 사용하여 키에 대한 험난한리스트 이해를 할 수 있습니다. 그렇게하는 것이 어렵다는 것은 왜 'OrderedDict'를 사용해야하는지에 대한 훌륭한 교훈입니다. –

+0

업데이트 : 파이썬 3.6부터는 사전 삽입 순서가 유지되므로이 구문은 더 이상 참이 아닙니다. – pelson