Python词典 - 在2个字符的字符串中查找产生最小值的第二个字符

时间:2012-09-05 15:31:30

标签: python dictionary

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

例如:

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

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

2 个答案:

答案 0 :(得分: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):]

答案 1 :(得分: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'