logo CodeStepByStep logo

rarest

Language/Type: Python dict collections

Write a function named rarest that accepts a dictionary from strings to strings as a parameter and returns the value that occurs least frequently in the dictionary. If there is a tie, return the value that comes earlier in ABC order. For example, if a variable called names containing the following elements:

{'Alyssa': 'Harding', 'Char': 'Smith', 'Dan': 'Smith', 'Jeff': 'Jones',
 'Kasey': 'Jones', 'Kim': 'Smith', 'Morgan': 'Jones', 'Ryan': 'Smith', 'Stef': 'Harding'}

Then a call of rarest(names) would return 'Harding' because that value occurs 2 times, fewer than any other. Note that we are examining the values in the dictionary, not the keys. If the dictionary passed is empty, raise a ValueError.

Constraints: Obey the following restrictions in your solution.

  • You may create one additional data structure (list, dictionary, etc.) as auxiliary storage. (You can have as many simple variables as you like.)
  • You should not modify the contents of the dictionary passed to your function.
    Declare your function in such a way that any caller can be sure that this will not happen.
  • Your solution should run in no worse than O(N log N) time, where N is the number of pairs in the dictionary.
Function: Write a Python function as described, not a complete program.

You must log in before you can solve this problem.

Log In

Need help?

Stuck on an exercise? Contact your TA or instructor.

If something seems wrong with our site, please

Is there a problem? Contact us.