Mike Tibb Mike Tibb - 18 days ago 5
Python Question

Return key associated with min value of a dict if min key is not in set

I have a dictionary and a set. I want to return the key associated with the minimum value if that key is not already in the set without creating a second dictionary used to delete items that are already in the set.

Example: I have dictionary

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


and a set

s = set([1,2])


It should return 3

Answer

Use the set operations to subtract the set s from the set of keys of d, then use min with key=d.get to get the remaining key with the smallest value:

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

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

prints 3