我想提交元组键的第一项并返回该键的剩余项,以最小化元组键值。
例如:
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')
我认为 Ashwins 的答案可能会更好,因为 pythonic 简单优于复杂标准,而且它们可能在时间尺度上执行相似......他甚至可能更快......