2010-08-03 2 views
2

내 사전의 내용에 정렬 기능과 관련하여 도움이 필요하면 그렇게 같다 : -파이썬

>>> dict 
{'6279': '45', '15752': '47', '5231': '30', '475': '40'} 

나는 키에 정렬 기능을 사용하여 시도했다. 나는 정렬 기능 키 작동하지 않는 것으로 나타났습니다 - 15752. 아래 찾아주세요 : -

>>> [k for k in sorted(dict.keys())] 
['15752', '475', '5231', '6279'] 

누군가가 나에게이 문제를 해결하는 방법을 지적 할 수 있을까요?

감사


내 예상 출력은 다음과 같습니다 -

['475', '5231', '6279', '15752'] 
+1

원하는 출력은 무엇입니까? 당신은 키 정렬을 보여주었습니다. 아니면 원하는대로 정렬하지 않습니까? 숫자 정렬이 아닌 텍스트 정렬을하고 있습니까? –

+0

파이썬은 당신이하기로 한 것을하고 있습니다. sorted()라고하는 방법은 사전 키 목록에서 작동합니다. 키가 문자열이므로 '15752'가 먼저 표시됩니다 ('1'은 '4'앞에옵니다 ...). – GreenMatt

+2

사전에 "사전"이름을 지정하지 마십시오. 당신은'dict()'에 그림자를 드리 우고 있습니다. –

답변

10

아 당신은 당신이 어떤 점에서 int(s)를 사용하여 숫자 문자열을 변환해야하므로 숫자 값이 아닌 문자열을 기준으로 정렬 할 이전 또는 당신이 번호를 저장 한 후 숫자 정렬 할 경우 단지 sorted(dict.keys(), key=int)

+2

+1 키를 사용하십시오. –

+1

정렬 (dict, key = int)으로 충분합니다 – hop

2

내 댓글에 내 생각은 옳았 당신은 숫자 키가 여기에 코드를 당신의 라인을 변경 분류하려면 다음

sorted([int(k) for k in test.keys()]) 
# returns [475, 5231, 6279, 15752] 
2

모두 정수인 경우

sorted(dict, lambda x, y: cmp(int(x), int(y))) 
+2

이 예제에서 cmp를 사용해서는 안되며, 'key = int'에 대해 – hop

1

를 사용하여 사전이 아닌 문자열 사전에 작동합니다.

>>> dict 
{6279: '45', 15752: '47', 5231: '30', 475: '40'}