1 class Solution: 2 def largestValsFromLabels(self, values: 'List[int]', labels: 'List[int]', num_wanted: int, use_limit: int) -> int: 3 dic = {} 4 for i in range(len(labels)): 5 l = labels[i] 6 if l not in dic: 7 dic[l] = 0 8 9 n = len(values) 10 arr = [] 11 for i in range(n): 12 arr.append([values[i],labels[i]]) 13 arr = sorted(arr,key=lambda x:[-x[0],x[1]]) 14 15 cnt = 0 16 sums = 0 17 for i in range(n): 18 curval = arr[i][0] 19 curlab = arr[i][1] 20 21 if cnt < num_wanted and dic[curlab] < use_limit: 22 cnt += 1 23 dic[curlab] += 1 24 sums += curval 25 return sums