nums
는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k
개수만큼 return 해주세요.
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
def top_k(nums,k):
dict = {}
result = []
for num in nums:
dict[num] = nums.count(num) # 현재 딕셔너리 형태{8: 3, 7: 2, 3: 1}
for j in range(k):
max_length = max(dict, key = dict.get)
result.append(max_length)
dict.pop(max_length)
return result
print(top_k([8,8,8,7,7,3],2))
dict.get 해당하는 키를 넣으면 value값을 뺴온다.
max(dict, key = dict.get)
=> value값을 기준으로 해서 제일 높은 key를 리턴한다.
dicts = {"3": 1, "2": 2, "1": 3}
print("딕셔너리 dicts의 values를 이용한 최대 값 구하기: %d" % max(dicts.values()))
print("딕셔너리 dicts의 values를 이용한 최소 값 구하기: %d" % min(dicts.values()))
print("딕셔너리 dicts의 최대 값을 가지는 키 구하기: ", max(dicts))
print("딕셔너리 dicts의 최소 값을 가지는 키 구하기: ", min(dicts))
딕셔너리 dicts의 values를 이용한 최대 값 구하기: 3
딕셔너리 dicts의 values를 이용한 최소 값 구하기: 1
딕셔너리 dicts의 최대 값을 가지는 키 구하기: 3
딕셔너리 dicts의 최소 값을 가지는 키 구하기: 1
Tv = {'BreakingBad':100, 'GameOfThrones':1292, 'TMKUC' : 88}
print(Tv.get('BreakingBad'))
# 100
Tv.get('찾고자 하는 key', default)
선언된 dict에 key가 있으면, 그에 해당하는 value를 출력해준다.
default 값을 선언해주면 찾고자 하는 key가 없을때 default 값이 리턴된다.
예1) value를 기준으로 가장 큰 값의 key를 구할 때
Tv = {'BreakingBad':100, 'GameOfThrones':1292, 'TMKUC' : 88}
Keymax = max(Tv, key=Tv.get) #Tv의 value를 기준으로 가장 큰 값의 key 값을 구한다.
print(Keymax)
#GameOfThrones
key 함수를 값으로 넣는다. lambda를 사용할 수 있다. key= function을 기준으로 최대, 최솟값을 찾는다.
key가 하는 역할
max 함수의 key는 어떻게 아이템을 정렬시킬지 결정하는데 사용된다.
즉, 어떤 기준으로 max 값을 구할지를 정하는 거
예2) 절대값을 찾는 함수 abs를 key값으로 넣을때
min(-5, 3, 0, 3, -5, key=abs)
#0
nums = [-5, 3, 0, 3, -5]
max(nums, key=abs)
#-5
예3) 나머지를 구하는 lambda 식을 key 값으로 넣을 때
nums = [-5, 3, 0, 3, -5]
min(nums, key= lambda x : x%3 )
# 3
max(-5, 3, 0, 3, -5, key= lambda x : x%3 )
# -5