タプル キーの最初の項目を送信し、タプル キーの値を最小化するそのキーの残りの項目を返したいと思います。
例えば:
d = {('a','b'): 100,
('a','c'): 200,
('a','d'): 500}
もし私が合格するなら'a'
、私は戻りたい'b'
です。
タプル キーの最初の項目を送信し、タプル キーの値を最小化するそのキーの残りの項目を返したいと思います。
例えば:
d = {('a','b'): 100,
('a','c'): 200,
('a','d'): 500}
もし私が合格するなら'a'
、私は戻りたい'b'
です。
def func(d,y):
lis=sorted((x for x in d.items() if x[0][0]==y),key=lambda x:x[1])
return lis[0][0][1]
d ={('a','b'):100,('a','c'):200,('a','d'):500,('b','c'):1000,('b','e'):100}
出力:
>>> func(d,'a')
'b'
>>> func(d,'b')
'e'
ここでは並べ替えは不要です。
>>> d ={('a','b'):100,('a','c'):200,('a','d'):500,('b','c'):1000,('b','e'):100}
>>> def func(d, k0):
... return min((k for k in d if k[0] == k0), key=d.get)[1]
...
>>> func(d, 'a')
'b'
>>> func(d, 'b')
'e'
これは、ジェネレータ式を使用して、最初の要素が入力と一致するディクショナリ内のキーのみを提供し、関連する「重み」(このコンテキストでは残念ながらここでは「キー」と呼ばれます)としてディクショナリ内の関連する値を使用することで機能します。辞書には.get
、特定のキーを指定して値を返すメソッドがあるため、これを使用するのが自然です。
同点の場合、これは任意のキーを返すことに注意してください。
def minval(my_dict,var_name):
return min(filter(lambda x: x[0][0] == var_name,my_dict.items()),key=lambda x:x[1])[0][1]
print minval(d,'a')
アシュウィンの答えはおそらくpythonic simpleの方が複雑な標準よりも優れていると思います。それらはおそらく時間スケールで同様に機能します...彼はさらに速いかもしれません...