def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
for idx, (g, p) in enumerate(zip(genres, plays)):
# {'classic': [(0, 500), (2, 150), (3, 800)], 'pop': [(1, 600), (4, 2500)]}
if g not in dic1:
dic1[g] = [(idx, p)]
else:
dic1[g].append((idx, p))
# {'classic': 1450, 'pop': 3100}
if g not in dic2:
dic2[g] = p
else:
dic2[g] += p
# dict_items([('classic', 1450), ('pop', 3100)])
for (k, v) in sorted(dic2.items(), key=lambda x:x[1], reverse=True):
for (i, p) in sorted(dic1[k], key=lambda x:x[1], reverse=True)[:2]:
answer.append(i)
return answer
reverse
: bool값을 넣는다. 기본값은 reverse=False
(오름차순),reverse=True
으로 내림차순 정렬할 수 있다.num_list = [3,4,77,34,66]
num_list.sort(reverse=True)
print(num_list) # [77, 66, 34, 4, 3]
print(sorted(['좋은하루','good_morning','굿모닝','niceday'], reverse=True))
['좋은하루', '굿모닝', 'niceday', 'good_morning']
key
: 정렬을 목적으로 하는 함수를 값으로 넣는다. lambda
를 이용할 수 있다. key 값을 기준으로 정렬되고 기본값은 오름차순
이다. str_list = ['좋은하루','good_morning','굿모닝','niceday']
print(sorted(str_list, key=len)) # ['굿모닝', '좋은하루', 'niceday', 'good_morning']
print(sorted(str_list, key=lambda x : x[1])) # ['niceday', 'good_morning', '굿모닝', '좋은하루']
tuple_list = [('좋은하루', 0), ('niceday', 1), ('좋은하루', 5),
('good_morning', 3), ('niceday',5)]
tuple_list.sort(key=lambda x : (x[0], x[1]))
print(tuple_list) # [('good_morning', 3), ('niceday', 1), ('niceday', 5), ('좋은하루', 0), ('좋은하루', 5)]
tuple_list.sort(key=lambda x : (-x[1], x[0]))
print(tuple_list) # [('niceday', 5), ('좋은하루', 5), ('good_morning', 3), ('niceday', 1), ('좋은하루', 0)]
순서와 리스트의 값
을 전달하는 기능순서가 있는 자료형(list, set, tuple, dictionary, string)
을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체
를 리턴for문
과 함께 자주 사용data = enumerate((1, 2, 3))
print(data, type(data)) # <enumerate object at 0x7fdfadfdf4c0> <class 'enumerate'>
for i, value in data:
print(i, ":", value)
# 0 : 1
# 1 : 2
# 2 : 3
data = enumerate({1, 2, 3})
for i, value in data:
print(i, ":", value)
# 0 : 1
# 1 : 2
# 2 : 3
data = enumerate([1, 2, 3])
for i, value in data:
print(i, ":", value)
# 0 : 1
# 1 : 2
# 2 : 3
dict1 = {'이름': '김지니', '나이': 33}
data = enumerate(dict1)
for i, key in data:
print(i, ":", key, dict1[key])
# 0 : 이름 김지니
# 1 : 나이 33
data = enumerate("재미있는 파이썬")
for i, value in data:
print(i, ":", value)
# 0 : 재
# 1 : 미
# 2 : 있
# 3 : 는
# 4 :
# 5 : 파
# 6 : 이
# 7 : 썬
한줄 평: 혼자 풀지못했다. sort, lambda, enumerate....😂
references
https://ooyoung.tistory.com/59