I would like to submit the first part of a key and return the remaining part of that key which minimizes the value (and starts with the first part).
For example:
d = {'ab': 100,
'ac': 200,
'ad': 500}
If I were to pass in 'a', I would like to return'b'`.
解决方案min(((d[s],s) for s in d if s.startswith('a')))[1][1:]
The min finds the minimum value in the (value, key) pairs, and then we take the key (with the smallest value), and display the latter part of it. This uses the fact that min, minimises over the first value in a tuple.
And we could generalise to find the minimum which "starts with a string" a as:
def smallest_value_of_key_startswith(a, d):
min(((d[s],s) for s in d if s.startswith(a)))[1][len(a):]