Need help with my code (Functions Practice Problem #11)

Hi, may someone explain why my code doesn’t work?

My Code:

``````from csv import reader
def check_unique_values(csv_filename, col_name):
index = find_col_index(csv_filename, col_name)
if index == -1:
return None
opened_file = open(csv_filename)
rows = rows[1:]
dictionary = {}
for row in rows:
column = row[index]
if column in dictionary:
dictionary[column] += 1
else:
dictionary[column] = 1
for key in dictionary:
value = dictionary[key]
if value == 1:
return True
if value != 1:
return False
``````

What I expected to happen:
I expected the output to give me the following…

provided inputs

csv_filename = “users.csv”
col_name1 = “name”

col_name2 = “id”

col_name3 = “email”

What actually happened:

I got all three True’s for the output and it told me my answer submission was correct.

Can someone explain to me why my code for the for loop below didn’t return the right True/False answers?

``````for key in dictionary:
value = dictionary[key]
if value == 1:
return True
if value != 1:
return False
``````

I thought it would be counting the frequency of each key but it seems like it didn’t. Thank you so much in advance!

This can be difficult to figure out, but the issue is with your statement here -

Let’s say you have a `dictionary` like the following -

``````{"abc": 1, "abd": 3}
``````

Now, when you iterate over the above, for the first iteration, your `value` would be `1`. And then your first `if` condition becomes `True`. And you `return True`. At this stage your code stops running. Because your function returned a value. So, you never actually reach that second key `abd` to say that your `dictionary` is not unique.

So, you need to modify your code so that you don’t `return True` right away. If you feel stuck, check out their provided solution as to how you could do that.

3 Likes

Thanks for the explanation! That makes a lot of sense. I saw the provided solution as well.

``````for key in freq:
if freq[key] > 1:
return False
return True
``````

So pretty much in my code, I cannot have two “if” statements when I check whether the dictionary has a unique value.