[Python] 딕셔너리 정렬하기
- Python/기초
- 2021. 3. 5.
반응형
반응형
딕셔너리를 정렬해야할 때가 있습니다.
특히나 딕셔너리는 {Key : Value} 로 되어있어서 Key정렬로 할 것인지 Value 정렬로 할 것인지 상황에 따라 달라집니다.
이번 포스팅에서는 각 기준에 따라 정렬하는 방법을 소개하겠습니다.
이 방법은 딕셔너리로 예쁘게 나오는 방법이 아닙니다. 리스트로 반환됩니다.
코딩 중에 정렬을 해서 뽑아내서 뭘 하기 위해 하는 중간과정이라 보시면 될 것 같습니다.
- Key를 이용한 정렬
- Value를 이용한 정렬
Key를 이용한 정렬
Key로 정렬하는 방법은 간단합니다. 리스트에서 하던 방식대로 하면 됩니다. sorded 함수를 사용합니다.
>>> data_dict = {}
>>> data_dict['A'] = 0
>>> data_dict['B'] = 4
>>> data_dict['C'] = 2
>>> data_dict['D'] = 8
>>> data_dict
{'A': 0, 'B': 4, 'C': 2,'D': 8}
먼저 이렇게 딕셔너리를 만들었습니다. 이제 정렬을 해보겠습니다.
>>> sort_dict = sorted(data_dict.items())
>>> sort_dict
[('A', 0), ('B', 4), ('C', 2), ('D', 8)]
기본적으로 오름차순으로 되고 내림차순으로 하고 싶다면 'reverse=True' 를 입력합니다.
>>> sort_dict = sorted(data_dict.items(),reverse=True)
>>> sort_dict
[('D', 8), ('C', 2), ('B', 4), ('A', 0)]
operator를 이용해 정렬을 할 수도 있습니다.
operator.itemetter(0)을 하면 인덱스 0번을 뜻하는데 딕셔너리로 적용하면 0은 Key, 1은 Value 입니다.
>>> import operator
>>> data_dict
>>> sort_dict = sorted(data_dict.items(),key=operator.itemgetter(0))
>>> sort_dict
[('A', 0), ('B', 4), ('C', 2), ('D', 8)]
lambda도 가능합니다.
>>> sort_dict = sorted(data_dict.items(), key=lambda x: x[0])
>>> sort_dict
[('A', 0), ('B', 4), ('C', 2), ('D', 8)]
Value를 이용한 정렬
Value는 인덱스를 정해줘야 해서 lambda와 operator만 가능합니다.
다 같은 맥락입니다. 편한걸로 쓰면 됩니다.
먼저 operator는 인덱스 1로 지정하면 정렬이 됩니다.
>>> import operator
>>> data_dict
>>> sort_dict = sorted(data_dict.items(),key=operator.itemgetter(1))
>>> sort_dict
[('A', 0), ('B', 2), ('C', 4), ('D', 8)]
lambda도 마찬가지입니다. 인덱스 1로 놓고 합니다. 그래서 x[1] 로 합니다.
>>> sort_dict = sorted(data_dict.items(), key=lambda x: x[1])
>>> sort_dict
[('A', 0), ('C', 2), ('B', 4), ('D', 8)]
생각보다 간단하게 정렬을 할 수 있습니다.
튜플로 변환되는것이 조금 아쉽기는 하지만 사용의 목적이 있으니 괜찮은 것 같습니다.
'Python > 기초' 카테고리의 다른 글
Jupyter notebook 기본폴더 변경해서 시작 (0) | 2021.03.12 |
---|---|
[Python] 시스템 종료하기(shutdown) (0) | 2021.03.07 |
파이썬 파일경로 표기법 (0) | 2021.02.24 |
[Python] 딕셔너리,리스트 저장하기(pickle) (0) | 2021.02.21 |
파이썬 패키지 삭제 (0) | 2021.02.20 |