Не претендую на идеальность решения и максимальную скорость выполнения программы, я сам новичек.
d = {'a': 21, 'b': 5, 'c': 7, 'd': 5, 'e': 10}
u = {k: v for k, v in d.items() if tuple(d.values()).count(v) < 2}
print(min(u.items(), key=lambda i: i[1])[0])
Некоторые пояснения:
1. d - данный словарь
2. u - сформированный словрь, в котором остались только элементы с уникальными значениями
3. С помощью функции min вычисляем элемент путем сравнения значения значений (не ключей), получаем кортеж вида (key, value) и возвращаем и возвращаем [0] элемент, т.е. key.
---
Если использовать python2.7, тогда вместо u.itеmes(), лучше использовать u.iteritems()