如果未设置最小键,则返回与dict的最小值相关联的键

时间:2016-11-18 02:16:45

标签: python dictionary set

我有一本字典和一套。我想返回与最小值关联的密钥,如果该密钥不在集合中,而不创建用于删除集合中已有项目的第二个字典。

示例:我有字典

d = {1:10, 2:20, 3:30, 4:40}

和一套

s = set([1,2])

它应该返回3

3 个答案:

答案 0 :(得分:2)

使用设置操作从s的密钥集中减去集合d,然后使用minkey=d.get来获取值最小的剩余密钥:

d = {1:10, 2:20, 3:30, 4:40}
s = set([1,2])

print min(set(d) - s, key=d.get)

打印3

如果未找到密钥时结果必须为None,请使用:

q = set(d) - s
print min(q, key=d.get) if q else None

而不是来自ValueError的{​​{1}}。

答案 1 :(得分:1)

您可以使用min生成表达式,返回不在min中的键和从s获取值的键参数:

d

以上方法不会创建任何中间容器。如果>>> d = {1:10, 2:20, 3:30, 4:40} >>> s = set([1,2]) >>> min((k for k in d if k not in s), key=d.get) 3 匹配来自s的密钥,则可以使用默认值:

d

答案 2 :(得分:1)

此处设置操作很有效。

d = {1:10, 2:20, 3:30, 4:40}
s = set([1,2])

def find_min(d, s):
    keys = set(d)
    difference = keys-s
    return min(difference) if difference else None

>>> print find_min(d, s)
3

或者,您可以difference = filter(lambda e: e not in s, d)