[22.08.27] ZIP & ENUMERATE & SORTED
베스트 앨범 사기버전
def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
for i, (g, p) in enumerate(zip(genres, plays)): # (0, (genre, plays)),(1, (genre, plays)),...
if g not in dic1:
dic1[g] = [(i, p)]
else:
dic1[g].append((i, p)) # dic1 : {'classic' : [(0,500),(2,150),(3,800)],'pop' : [(1,600),(4,2500)]}
if g not in dic2:
dic2[g] = p
else:
dic2[g] += p # dic2 : {'classic' : 1450, 'pop' : 3100 }
for (k, v) in sorted(dic2.items(), key=lambda x:x[1], reverse=True): # dic2 값 기준으로 내림차순 정렬하여 하나씩 불러옴
for (i, p) in sorted(dic1[k], key=lambda x:x[1], reverse=True)[:2]: # dic1의 값 튜플의 1번 인덱스 재생수 내림차순 2개 정렬로 불러옴
answer.append(i) # answer = [4, 1, 3, 0]
return answer
enumerate 함수
enumerate
(iterable, start=0)
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
zip 함수
zip
(iterables)
x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
list(zipped)
[(1, 4), (2, 5), (3, 6)]
sorted 키 함수
sorted
(정렬할 데이터)
sorted
(정렬할 데이터, reverse = False)
sorted
(정렬할 데이터, key = <함수> , reverse = False)함수>
list.sort()
와sorted()
는 모두 비교하기 전에 각 리스트 요소에 대해 호출할함수
(또는 다른 콜러블)를 지정하는 key 매개 변수를 가지고 있습니다.
sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
sorted(student_tuples, key=lambda x: x[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
lambda 함수
lambda [parameters] : expression
def <lambda>(parameters):
return expression