하도 까먹어서 적어놓는 딕셔너리형 정렬 방법
딕셔너리는 key와 value 둘 중 어떤걸 기준으로
삼느냐에 따라 정렬 방법이 달라진다
이러한 배열이 있다고 가정하고
키(key) 기준 정렬하는 방법
값(value)기준 정렬하는 방법은
sorted를 사용하며 사용법은 아래와 같다.
#오름차순
def dict_sort(dict_obj,is_key):
sort = {}
if is_key is True:
# 키를 이용한 정렬
sort_ = sorted(result_parsing_keywords.items(), reverse=False)
# 또는 sorted(result_parsing_keywords.items())
else:
# 값을 이용한 정렬
sort_ = sorted(dict_obj.items(), key=operator.itemgetter(1))
return sort_
result_parsing_keywrds대신 object를 넣어주면 되며
.items()는 원래 dict의 아이템을 가져올때 사용하는 형식
reverse옵션은 기본이 False라서 오름차순으로
나타내고 싶을때는 작성하지 않아도 무방하다고 하지만
나는 적어주었다.
값을 이용한 정렬엔
key=operator.itemgetter(1) 라는 표현이 사용되었는데
여기서 넣는 숫자값은 딕셔너리의 몇번째 item?을 가져올건지에 대한 값이라고 한다
그러니 0 넣으면 key, 1넣으면 첫번째 value...이렇게?
아직 다중 key, value 처리는 해보지 않았다
# 내림차순
def dict_sort_reverse(dict_obj,is_key):
sort_reverse = {}
if is_key is True:
# 키를 이용한 정렬
sort_reverse = sorted(dict_obj.items(), reverse=True)
else:
# 값을 이용한 정렬
sort_reverse = sorted(dict_obj.items(), key=operator.itemgetter(1), reverse=True)
return sort_reverse
내림차순은 이렇게 표현했고
키를 이용한 정렬, 값을 이용한 정렬
오름차순, 내림차순 출력해보면
아래와 같이 나타난다
굳이 함수 두개나 둘 필요 없을것 같아서
최종적으로 아래와 같이 구현함
def dict_sort(dict_obj,is_key,is_reverse):
sort_ = {}
# is_reverse가 true면 내림차순
# ex, 3,2,1,...
if is_key is True:
# key기준
sort_ = sorted(dict_obj.items(), key=operator.itemgetter(0), reverse=is_reverse)
else:
# value기준
sort_ = sorted(dict_obj.items(), key=operator.itemgetter(1), reverse=is_reverse)
return sort_
값 기준 내림차순으로 구현하고 싶으면
result = {}
result = dict_sort(dict_obj,1,True)
이렇게 넣으면 된다