-1

我想提交密钥的第一部分并返回该密钥的剩余部分,以最小化该值(并从第一部分开始)。

例如:

d = {'ab': 100,
     'ac': 200,
     'ad': 500}

如果我要传入'a', I would like to return'b'`。

4

2 回答 2

1
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):]
于 2012-09-05T15:35:42.717 回答
0

用这个:

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'
于 2012-09-05T15:49:34.297 回答