【发布时间】:2022-01-14 19:14:00
【问题描述】:
我有一个字典,其中的值将某个对象映射到一个整数;例如{节点:1,节点:2}。
我想获取与此字典中最小值对应的键,我知道我可以这样做:
min_key = min(my_dict, key=lambda k: my_dict[k])
但是,我还想添加键不包含在其他集合中的约束。这是我希望工作的伪代码:
min_key = min(my_dict, key=lambda k: my_dict[k] where k not in my_set)
有没有办法在 python 中将它写成单行代码作为 lambda 的一部分,还是我现在必须显式循环遍历字典并像这样在循环中添加逻辑?
min_key, min_value = None, float('inf')
for k,v in my_dict.items():
if v < min_value and k not in my_set:
min_key = k
return min_key
【问题讨论】:
-
那不是一个有效的字典,你不能有重复的键。
-
一个标准的技巧是返回
math.inf获取最小值时要忽略的值。同样使用-math.inf来查找最大值。所以你的例子是key=lambda k: math.inf if k in my_set else my_dict[k]
标签: python dictionary lambda