sorted() 결과가 리스트이므로 이 뒤에 [:2]를 붙여 슬라이싱합니다. 가장 저렴한 물건 세 가지를 알고 싶다면 [:3]을 붙이면 되겠죠? 딕셔너리를 정렬하는 기능은 데이터 분석 프로젝트에서 많이 쓰니 잘 알아 두기 바랍니다.
NOTE 딕셔너리를 정렬해도 원본 딕셔너리는 영향을 받지 않는다?
이 말이 무슨 뜻일까요? 코드를 살펴봅시다.
mart = {'과자': 1500, '아이스크림': 1700, '휴지': 4800, '고기': 10500, '우유': 2600}
sorted(mart.keys())
print(mart)
실행결과
{'과자': 1500, '아이스크림': 1700, '휴지': 4800, '고기': 10500, '우유': 2600}
mart 딕셔너리를 만든 다음 키를 기준으로 딕셔너리를 정렬했습니다. 그러고 나서 mart 딕셔너리를 출력해 보니 정렬되지 않은 처음 상태 그대로 출력됩니다. 이처럼 sorted()는 딕셔너리를 정렬해서 보여 줄 뿐, 딕셔너리에 저장된 내용에는 영향을 주지 않습니다. 정렬한 결과는 다음처럼 원래 딕셔너리와는 별개입니다. 정렬한 결과를 기억하고 싶으면 변수에 저장해야 합니다.
정렬한 결과를 원래 딕셔너리가 저장되어 있던 mart에 다시 저장해 봅시다.
mart = {'과자': 1500, '아이스크림': 1700, '휴지': 4800, '고기': 10500, '우유': 2600}
mart = sorted(mart.keys())
print(mart)
실행결과
['고기', '과자', '아이스크림', '우유', '휴지']
sorted()의 결과는 리스트이기 때문에 mart = sorted(mart.items())를 실행하면 mart는 딕셔너리가 아닌 리스트가 됩니다. 코드 실행 후 키가 사라지고 인덱스가 생긴 걸 확인할 수 있습니다.
정렬된 결과를 딕셔너리로 저장하려면 dict()로 감싸 데이터 타입을 딕셔너리로 변환하면 됩니다. 단, 딕셔너리는 키와 값이 필요하므로 items()로 정렬한 결과만 딕셔너리로 변환할 수 있습니다.
mart = {'과자': 1500, '아이스크림': 1700, '휴지': 4800, '고기': 10500, '우유': 2600}
mart = dict(sorted(mart.items()))
print(mart)
실행결과
{'고기': 10500, '과자': 1500, '아이스크림': 1700, '우유': 2600, '휴지': 4800}
키-값 쌍으로 딕셔너리를 정렬하고, 이를 dict()로 감싸 딕셔너리 타입으로 다시 저장합니다.