2014-11-07 5 views
2

사전의 키를 반복해야하지만 값에 지정된 순서대로 수행해야합니다.Python : 정렬 된 값으로 사전 키를 반복합니다.

예 :

myDict = {ID1: 50, ID2: 40, ID3: 60} 

어떻게 든이 일을하고 싶습니다 :

for keyCorrespondingToTheValue in sorted(myDict.values()): 

-> 어떻게 이런 일이 만들 수 있습니까?

값이 순위 인 경우 순위별로 순서대로 각 ID를 검토합니다. 사전의 키/값을 뒤집어서이 작업을 수행 할 수 있지만 순위 값이 고유하다는 보장이 없으므로 원하지 않습니다.

답변

4

당신과 같이 myDict.items을 정렬 할 수 있습니다

>>> myDict = {'ID1': 50, 'ID2': 40, 'ID3': 60} 
>>> for item in sorted(myDict.items(), key=lambda x: x[1]): 
...  item 
... 
('ID2', 40) 
('ID1', 50) 
('ID3', 60) 
>>> for key, _ in sorted(myDict.items(), key=lambda x: x[1]): 
...  key 
... 
'ID2' 
'ID1' 
'ID3' 
>>> 

여기서 중요한 부분은 sortedkey function, 당신은 당신이 분류되어 각 항목을 할 방법을 지정할 수있다. 이 경우 각 키의 값을 정렬합니다.

sortedkey을 사용하는 방법을 더 잘 이해하려면 설명서에서 Sorting HOW TO을 읽어보십시오.

+0

감사합니다! 가장 큰 것부터 가장 작은 것부터 어떻게 정렬합니까? –

+0

@JessicaDow - sorted (myDict.items(), key = lambda x : x [1], reverse = True)의 항목에 대해'reverse' 매개 변수를'True'로 간단히 설정할 수 있습니다 : ' – iCodez

+0

HOW TO "정렬 방식이 좋을 수도 있습니다. https://docs.python.org/3/howto/sorting.html –

2
for key in sorted(myDict, key=lambda k: myDict[k]): 
    ... 
+3

'key = myDict.get' – georg

3
for key in sorted(myDict, key=myDict.get) 
관련 문제