# Implement the most_least_frequent() function so that it outputs: The frequency of the most frequent value in the list. The frequency of the least frequent value in the list

My Code:

``````values = [10, 20, 30, 10, 30, 10]
# answer to this input: 3, 1

def most_least_frequent(values):
freq = {}

for number in values:
if number in freq:
freq[number] +=1
else:
freq[number] = 1
maximum = 0
minimum = 1
for i in freq:
if freq[i] > maximum:
maximum = freq[i]
if  freq[i] <= minimum:
minimum = freq[i]
return maximum, minimum

print(most_least_frequent(values))

Replace this line with your code
``````

What I expected to happen:
when i run the code It is showing me right output which is (3,1) but it is showing me an error saying

What actually happened:

Also i did not understand why solution uses the None for Maximum and minimum value.

Here is the solution:

``````# provided input
values = [10, 20, 30, 10, 30, 10]
# answer to this input: 3, 1
def most_least_frequent(values):
# 1. compute the frequencies
freq = {}
for v in values:
if v in freq:
freq[v] += 1
else:
freq[v] = 1
# 2. compute the minimum and maximum
max_freq = None                             **I don't understand why to use None instead of 0**
min_freq = None
for v in freq:
if max_freq is None or freq[v] > max_freq:
max_freq = freq[v]
if min_freq is None or freq[v] < min_freq:
min_freq = freq[v]
return max_freq, min_freq

print(most_least_frequent(values))
``````

Take your code above with `freq` as `{1: 7}` and then for each iteration of the loop, write down how the `minimum` and `maximum` values change for each step of the iteration and then add print statements to check what happens as well as the loop run. Do you notice why starting with `1` or `0` could be an issue?

Let me know if you notice the problem with your logic for that input and/or if you have further questions.