-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 に答える