EXCELSIOR

[Level1] 딕셔너리 정렬 (sort_dictionary) 본문

Python/알고리즘_문제

[Level1] 딕셔너리 정렬 (sort_dictionary)

Excelsior-JH 2016. 10. 24. 14:49

1. 문제

딕셔너리는 들어있는 값에 순서가 없지만, 키를 기준으로 정렬하고 싶습니다. 그래서 키와 값을 튜플로 구성하고, 이를 순서대로 리스트에 넣으려고 합니다.

예를들어 {"김철수":78, "이하나":97, "정진원":88}이 있다면 각각의 키와 값을


("김철수", 78)

("이하나", 97)

("정진원", 88)

과 같이 튜플로 분리하고 키를 기준으로 정렬해서 다음과 같은 리스트를 만들면 됩니다.

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


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



2. 풀이

1) 내가 작성한 코드

-  dictionary → tuple로 바꿔주는 tuple( ) 함수와 정렬해주는 sorted( ) 함수를 사용하여 해결하였다.

def sort_dictionary(dic):
    '''입력받은 dic의 각 키와 값을 튜플로 만든 다음, 키 값을 기준으로 정렬해서 리스트에 넣으세요. 그 리스트를 return하면 됩니다.'''
    return sorted(tuple(dic.items()))

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( sort_dictionary( {"김철수":78, "이하나":97, "정진원":88} ))

2) 다른 풀이
- lambda 함수를 사용하여 문제를 해결하였다. → lambda에 익숙해 지려면 시간이 걸릴 듯 하다...
def sort_dictionary(dic):
    return sorted(dic.items(), key=lambda x: x[0])

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( sort_dictionary( {"김철수":78, "이하나":97, "정진원":88} ))

3. 알아둘 것

- dictionary items() 함수 : The method items() returns a list of dict's (key, value) tuple pairs



Comments