https://school.programmers.co.kr/learn/courses/30/lessons/42579
dict_gen = dict()
i = -1
for g, p in zip(genres, plays):
i += 1
dict_gen[g] = dict_gen.get(g, []) + [(p, i)]
--> dict_gen : {'classic': [(500, 0), (150, 2), (800, 3)], 'pop': [(600, 1), (2500, 4)]}
for k in dict_gen:
dict_gen[k].sort(key = lambda x: (-x[0], x[1]))
print(dict_gen)
--> {'classic': [(800, 3), (500, 0), (150, 2)], 'pop': [(2500, 4), (600, 1)]}
get_sum( )
을 따로 만들어 줬다.dict_gen.items()
의 결과 값은 다음과 같다.dict_gen.items()
결과에서 0번째 값이 아닌 1번째 값 [(800, 3), (500, 0), (150, 2)]과[(2500, 4), (600, 1)])] 에서 구해야하므로 get_sum
함수의 인자로 1번째 값을 보내줘야 한다. --> lambda x: get_sum(x[1])
get_sum()
의 결과 값이 작은 순으로 key값을 정렬해준다.def get_sum(lst):
total = 0
return sum(list(map(lambda x:x[0], lst)))
key_sort_dict = sorted(dict_gen.items(), key = lambda x: get_sum(x[1]), reverse = True)
--> 정렬 결과 : [('pop', [(2500, 4), (600, 1)]), ('classic', [(800, 3), (500, 0), (150, 2)])]
의도한 대로 pop -> classic 순으로 key값이 정렬 되었다.
k[1][:2]
이때 노래의 고유번호를 출력해야한다. map(lambda x:x[1], k[1][:2])
def get_sum(lst):
total = 0
return sum(list(map(lambda x:x[0], lst)))
def solution(genres, plays):
dict_gen = dict()
i = -1
for g, p in zip(genres, plays):
i += 1
dict_gen[g] = dict_gen.get(g, []) + [(p, i)]
print(dict_gen)
print('---------------')
for k in dict_gen:
dict_gen[k].sort(key = lambda x: (-x[0], x[1]))
print(dict_gen)
print('---------------')
key_sort_dict = sorted(dict_gen.items(), key = lambda x: get_sum(x[1]), reverse = True)
answer = []
for k in key_sort_dict:
answer += list(map(lambda x:x[1], k[1][:2]))
return answer