해당 문제에서는 이렇게 처리하였다.
count_doc = dict()
genre_table = dict()
for i in range(len(genres)):
try: # 2. 그렇지 않을 경우에는 해당 key에 해당하는 값을 update 해주면 됨
count_doc[genres[i]] += plays[i]
genre_table[genres[i]].append([plays[i], i])
except: # 1. 최초 실행 시에는 key값이 없어서 에러가 날터이니 except로 들어와서 최초생성
count_doc[genres[i]] = plays[i]
genre_table[genres[i]] = [[plays[i], i]]
try except 안쓰려면 if genres[i] in count_doct:
이렇게 하면 됨
sorted(dict, key= lambda x: dict[x])
test_dict = dict()
test_dict[1] = [54, 10, 34] # [0] value 기준으로 가장 큼
test_dict[2] = [5, 16, 7] # [1] value 기준으로 가장 큼
test_dict[3] = [1, 4, 50] # [2] value 기준으로 가장 큼
print(test_dict)
sorted1 = sorted(test_dict, key = lambda x: test_dict[x])
sorted2 = sorted(test_dict, key = lambda x: test_dict[x][0])
sorted3 = sorted(test_dict, key = lambda x: test_dict[x][1])
sorted4 = sorted(test_dict, key = lambda x: test_dict[x][2])
print(sorted1) # [3, 2, 1] # !! 잘보면 key값 1이 가장 큰 value를 갖고 있어서 뒤로 갔음 !!
print(sorted2) # [3, 2, 1]
print(sorted3) # [3, 1, 2]
print(sorted4)
응용
for key in sorted(test_dict): # dictionary 는 sort하면 key를 return한 배열을 주기때문에
print(key, test_dict[key])
# 결과
1 [54, 10, 34]
2 [5, 16, 7]
3 [1, 4, 50]
tuples = sorted(dict.items())
items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴된다. 이를 정렬해주는 것.
new0 = sorted(test_dict.items(), key = lambda x: x[0]) # [(1, [54, 10, 34]), (2, [5, 16, 7]), (3, [1, 4, 50])]
new1 = sorted(test_dict.items(), key = lambda x: x[1]) # [(3, [1, 4, 50]), (2, [5, 16, 7]), (1, [54, 10, 34])]
new2 = sorted(test_dict.items(), key = lambda x: x[1][0]) # [(3, [1, 4, 50]), (2, [5, 16, 7]), (1, [54, 10, 34])]
new3 = sorted(test_dict.items(), key = lambda x: x[1][1]) # [(3, [1, 4, 50]), (1, [54, 10, 34]), (2, [5, 16, 7])]
new4 = sorted(test_dict.items(), key = lambda x: x[1][2]) # [(2, [5, 16, 7]), (1, [54, 10, 34]), (3, [1, 4, 50])]
alphabet = 'ABC'
print(alphabet[::-1])
'CBA'