2011-09-02 2 views
0

가능한 중복에 따라 목록의 사전 정렬 :
Sorting a dictionary having keys as string of numbers in python

내가 키의 값에 따라 목록의 사전을 정렬 할을. 이것은

{'217': ['109'], 
'214': ['111', '156', '159'], 
'215': ['111'], 
'219': ['111', '114', '212', '214’]} 

지금 모습입니다하지만 뭔가 같은

{'214': ['111', '156', '159'], 
'215': ['111'], 
'217': ['109'], 
'219': ['111', '114', '212', '214’]} 

어떤 제안을 줄까? 그들이 해시로 구현되기 때문에 감사

답변

3

사전은 특정 순서에서 자신의 키를 정렬하지 않습니다 테이블. TokenMacGuy의 이해를 사용하여 당신은 collections.OrderedDict 사용할 수 있습니다

>>> mydict = {'217': ['109'], '214': ['111', '156', '159'], '215': ['111'], '219': ['111', '114', '212', '214']} 
>>> [(k, mydict[k]) for k in sorted(mydict)] 
[('214', ['111', '156', '159']), ('215', ['111']), ('217', ['109']), ('219', ['111', '114', '212', '214'])] 
1

(Python2.7로 볼 수 있습니다 또는 3.1 이상)

: 당신은 같은 것을 사용하여 딕셔너리로 ​​정렬 된 순서로 키와 값을 얻을 수는 없지만 :

+2

'OrderedDict'는 키를 정렬하지 않고 삽입 한 순서대로 반환합니다. JBernardo가 정렬 된 순서로 그것들을 삽입하기 때문에 그것들은 반환 될 것이지만 더 많은 키가 나중에 추가되면'OrderedDict'가 의지되어야 할 것입니다. – SingleNegationElimination

+0

그 이유는 당신이 전에 그것을 정렬해야합니다 ... – JBernardo

+0

내가 알았지 만, 어쩌면 모든 사람이 당신의 대답을보고 그 명백한 발견; 나는 그 세부 사항에주의를 끌 것이라고 생각했다. – SingleNegationElimination