This is another exercise that needs some tweaking. We need to use -inf which is something that never came up before, there’s just no way for newbie like me to do this without checking the hint which is demotivating.
The function should return the key associated with the largest value in the dictionary.
What if the largest value corresponds to more than one key in the dictionary?
It might be a possibility which is not outside the context of the exercise.
The solution given, does not seem to cover that case.
If we try to
print(max_key({1:100, 2:100, 3:4, 4:10}))
the output is 1 (the first key in order, corresponding to the largest value), although the output should be 1,2.
I apologize if this has been addressed elsewhere but I’ve Googled around a lot at this point and it’s driving me insane: Is there a simple way to turn the values of a dictionary into a true list? I’ve tried various operations on the dictionary – including getting a list of tuples, making each value a float, creating an empty list and then appending each value… and many more. While I am able to get what looks like a list through several of these strategies, trying any list methods on it (such as list.sort(), which seems like it could be very useful in this context!) always gets me either an error or “None.”
I realize that the data in dictionaries is unsorted but I can’t help but think that if a script is returning the dictionary value “3” then there must be a not-overly-complicated way to take that “3” and say, “great, now I’m going to add the integer ‘3’ to a list with other integers so that I can sort them later” without breaking the list. Even if what I’m adding to my list isn’t the dictionary value itself but rather an integer derived from reading it.
Not to pile on, but I’ve been slogging through these modules over the course of the past week and I distinctly remember one of the previous lessons/projects/examples using “inf.”
Mind you, I had to Google it because it was “a long time ago” and I couldn’t remember how to represent it anymore, so I definitely get where you’re coming from – but there was for sure a use of positive inf at some point prior to this challenge. I did -1*float(‘inf’) but it’s nice to know that ‘-inf’ is a thing too.
I’m not trying to avoid creating a new list at all, but the thing is, I did try your method and it isn’t working for me! (And while I think I understand why this would be, what I’m really looking for is a method of getting a true list out of these values – e.g. one that can take methods like .sort().)
Here is my code for reference in case I have made one of my classic dumb errors somewhere else:
a dict is iterable, if something is iterable you can iterate through it and stick those things in a list
…which you probably already know. not sure what you perceive to be stopping you
Thanks, ionatan. I was doing lots and lots of printing, but I was mistakenly believing that the results (i.e. “none”) had something to do with the fact that an unsortable dictionary object was being referenced. Could you explain your comment above about how sorting is overkill? Do you mean “less work” as in there is a way to do it with fewer lines of code, or “less work” as in executed faster? Asking because the Codecademy solution is significantly longer (in terms of lines of code) than doing list(dict.values()).sort(), then return list[-1].