2016-09-09 4 views
2

중첩 된 사전을 파이썬으로 정렬하려고합니다.중첩 된 사전 목록을 정렬하는 파이썬

지금은 사전을 가지고 있습니다. 사전을 만들기 시작하기 전에 목록에서 정렬 된 외부 키를 정렬 할 수 있었지만 내부 키를 동시에 정렬 할 수 없었습니다.

정렬 된 API를 사용하는 데 문제가있는 반면 난 엉망이되었습니다.

myDict = {'A': {'Key3':4,'Key2':3,'Key4':2,'Key1':1}, 
      'B': {'Key4':1,'Key3':2,'Key2':3,'Key1':4}, 
      'C': {'Key1':4,'Key2':2,'Key4':1,'Key3':3}}; 

하지만 내가 좋아하는 것 :

는 지금은이

myDict = {'A': {'Key1':1,'Key2':3,'Key3':4,'Key4':2}, 
      'B': {'Key1':4,'Key2':3,'Key2':1,'Key4':1}, 
      'C': {'Key1':4,'Key2':2,'Key3':3,'Key4':1}}; 

내가 도움을 주셔서 감사합니다!

+2

'collections.OrderedDict (분류 ({ '키 3': 4 '키 2'3 '키 4'2 '키 1': 1} .items())) ' – ozgur

+0

dicts을 순서화한다. 위의 의견과 같이 OrderedDict를 보시길 바랍니다 more : http://stackoverflow.com/questions/526125/why-is-python-ordering-my-dictionary-like-so – GMarsh

+0

왜 사전을 정렬해야합니까? – wwii

답변

1
>>> from collections import OrderedDict 

>>> def sortedDict(items): 
...  return OrderedDict(sorted(items)) 

>>> myDict = {'A': {'Key3':4,'Key2':3,'Key4':2,'Key1':1}, 
...   'B': {'Key4':1,'Key3':2,'Key2':3,'Key1':4}, 
...   'C': {'Key1':4,'Key2':2,'Key4':1,'Key3':3}} 

>>> sortedDict((key, sortedDict(value.items())) for key, value in myDict.items()) 
+0

나는 OrderedDict를 사용해야합니까? 나는 myDict 키를 통해 반복 할 수 있다고 생각했는데 어떻게 든 \t \t myDict [k] .items(), key = lambda x : x [0], reverse = False); –

+0

@MikeHatcher 사전은 순서가 지정되지 않은 모음입니다. 앞에서 말한 것처럼'sorted'를 사전에 적용하면 정렬 된 튜플의 배열이 반환됩니다. 일단 당신이'dict (sorted (..))'를 호출하여 그것을 dict로 변환하면, 배열은 다시 정렬되지 않게 될 것이다. 따라서 'OrderedDict'를 사용해야합니다. – ozgur

+1

아, 그래, 내가 다른 방식으로 생성해야 할 것 같아서 내가 원하는 순서대로 인쇄 할 수있다. –