본문 바로가기

파이썬 프로그래밍/파이썬 심화

[Python] 파이썬 예제. 딕셔너리 정렬

본 게시글은 http://tryhelloworld.co.kr/ 에서 문제를 참고하여 풀이한 게시글입니다.


level 1 의 난이도 쉬움 문제입니다



문제

딕셔너리는 들어있는 값에 순서가 없지만, 키를 기준으로 정렬하고 싶습니다. 그래서 키와 값을 튜플로 구성하고, 이를 순서대로 리스트에 넣으려고 합니다.
예를들어 {"김철수":78, "이하나":97, "정진원":88}이 있다면 각각의 키와 값을

  • ("김철수", 78)
  • ("이하나", 97)
  • ("정진원", 88)

과 같이 튜플로 분리하고 키를 기준으로 정렬해서 다음과 같은 리스트를 만들면 됩니다.
[ ("김철수", 78), ("이하나", 97), ("정진원", 88) ]

다음 sort_dictionary 함수를 완성해 보세요.


1
2
3
4
5
6
7
8
def sort_dictionary(dic):
    '''입력받은 dic의 각 키와 값을 튜플로 만든 다음, 
    키 값을 기준으로 정렬해서 리스트에 넣으세요. 
    그 리스트를 return하면 됩니다.'''
    return []
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( sort_dictionary( {"김철수":78"이하나":97"정진원":88} ))
cs



풀이

===보시기전에 알아야할 사항===

key는 list에 쓸수 없으므로 tuple을 사용한다.

list vs tuple

- list는 순서가 변경될수 있지만 (가변적)

- tuple은 순서가 변경될 수 없다. (불변적)

그래서 list가 아닌 tuple을 사용합니다.

1
2
3
4
5
6
7
8
9
import operator
def sort_dictionary(dic):
    '''입력받은 dic의 각 키와 값을 튜플로 만든 다음, 
    키 값을 기준으로 정렬해서 리스트에 넣으세요. 
    그 리스트를 return하면 됩니다.'''
    return tuple(sorted(dic.items(), key=operator.itemgetter(0)))
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( sort_dictionary( {"김철수":78"이하나":97"정진원":88} ))
cs

6번째 줄만 보시면 됩니다.


tuple()

tuple()을 사용하여 받아온 매개변수 dic을 tuple형태로 바꿔줍니다.


sorted()

정렬해주기 위하여 sorted를 사용합니다.

dic.items()

이 함수는 dic에 있는 매개변수들을 Key값과 value값을 같이 출력할때 사용합니다.


key=operator.itemgetter(0)

남아있는 부분은 key를 기준으로 정렬을 해주는데, 우리는 itemgetter을 사용할것입니다.

itemgetter은 0일경우에 key를 기준으로

1일경우에 key가 아닌 값을 기준으로 할때 해줍니다.

operator은 첫번째줄에 import한 녀석을 불러온다고 보시면 되겠네요


정리하자면 key를 기준으로 정리하는데 우리는 itemgetter함수를 사용하여 정렬한다고 생각하면 됩니다.




실행은 잘되는데 답안제출이 안되네요


보시다싶이 답은 잘나옵니다. Pycharm에서 테스트 했을때도 잘돌아가는 코드입니다.

여기서만 안되서 오류보고 해놓았네요.