I feel like the following solution is clearer:
from typing import List
from collections import Counter
def dropped_requests(request_time: List[int]) -> int:
pairs = list(Counter(request_time).items())
res = 0
l10 = l60 = 0
c10 = c60 = 0
for time, total in pairs:
c10 += total
c60 += total
while pairs[l10][0] < time - 9:
c10 -= pairs[l10][1]
l10 += 1
while pairs[l60][0] < time - 59:
c10 -= pairs[l60][1]
l60 += 1
res += max(total - 3, c10 - 20, c60 - 60, 0) # 0 if none are dropped
return res