1 minute read

베스트 앨범 사기버전

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

이미지

Updated: