d = {..}
>>> sorted(d)
>>> sorted(d, key= lambda x : dict[x])
reverse = True
라는 옵션을 뒤에 붙여주면 된다.>>> sorted(d.items(), key=lambda x : x[1])
items()
메서드를 사용해주면 {"key" : value}
의 형태를 [(key, value)]
의 형태로 만들어 준다.>>> dict(sorted(d.items(), key=lambda x : x[1]))
from operator import itemgetter
d = {'wecode':1, 'ryan':2, 'wework':3}
sort_d = sorted(d, key = itemgetter(0))
>>> sort_d = ['ryan', 'wecode', 'wework']
itemgetter
안에는 키값이 들어갈수도 있고, 인덱스를 넣어줄수도 있다. 위의 예제는 0번쨰 인덱스 즉, 정렬기준은 key자체가 된다. 먄약 인자를 1로 바꿔주면 value가 기준이 되고 다음과 같은 결과를 얻을 수 있다.>>> sortdic = ['wecode', 'wework', 'ryan']
itemgetters
는 안에 하나이상의 값이 들어가면 먼저 기준에 따라 정렬하고, 동일한 값이 나올 경우 다음 기준으로 다시 정렬한다. 해당 method에 옵션으로 reverse=True
를 해주면 내림차순으로 정렬이 된다.itemgetters
또한 items()
메서드와 함께 사용하여 lists of tuple 형태로 나타낼 수 있으며, 해당 결과값을 dict()
메서드를 통해 list에서 dictionary 형태로 변환시킬 수 있다.from operator import itemgetter
.
.
.
total_hearts_list = [
{
"img_id" : d['pk'],
"total_hearts" : Cloth.objects.get(id = d['pk']).total_hearts
} for d in hearts_list
]
data = sorted(total_hearts_list, key = itemgetter('total_hearts'))
total_hearts_list
라는 list에서 key가 total_hearts
인 값들을 오름차순으로 정렬한 code이다.
itemgetter
에는 하나 이상의 값을 넣어서 순서대로 정렬시킬 수 있다.