我想提交密钥的第一部分并返回该密钥的剩余部分,以最小化该值(并从第一部分开始)。
例如:
d = {'ab': 100,
'ac': 200,
'ad': 500}
如果我要传入'a', I would like to return
'b'`。
我想提交密钥的第一部分并返回该密钥的剩余部分,以最小化该值(并从第一部分开始)。
例如:
d = {'ab': 100,
'ac': 200,
'ad': 500}
如果我要传入'a', I would like to return
'b'`。
min(((d[s],s) for s in d if s.startswith('a')))[1][1:]
min
找到对中的最小值,然后我们(value, key)
取键(具有最小值),并显示它的后半部分。这使用了min
, 最小化元组中的第一个值的事实。
我们可以概括以找到“以字符串开头”的最小值a
:
def smallest_value_of_key_startswith(a, d):
min(((d[s],s) for s in d if s.startswith(a)))[1][len(a):]
用这个:
def f(d, key):
return min(((v, k[1]) for k, v in d.items() if k[0] == key))[1]
distance = {('a','b'):100,('a','c'):200,('a','d'):500}
print f(distance, 'a')
>>> 'b'
distance = {('c','e'):200,('d','c'):100,('c','d'):500}
print f(distance, 'c')
>>> 'e'