假设我有一本字典,d。
d = {"x": 4, "r" : 9, "p" : 18, "v" : 20}
我有一个变量,我。如何找到最接近但不超过i?
的值的键例如,如果i为5,则函数将返回“x”,但如果i为19,则函数将返回“p”。
我唯一能想到的就是使用for循环。
答案 0 :(得分:0)
这样的事情会起作用:
d = {'a': 2, 'b': 1, 'c': 4}
x = 2
# subtract from all values
for k, v in d.items():
d[k] = v - x
# get the key with the largest value
largest = max(d, key=lambda k: d[k])
假设您正在对所有值应用整数偏移(在这种情况下为减法),则最大键在减法之前和之后都是相同的,因此它没有区别
编辑:
对于修改后的问题,请尝试以下方法:
d = {"x": 4, "r" : 9, "p" : 18, "v" : 20}
x = 19
closest = min(d, key=lambda k: abs(d[k] - x)) # returns 'p'
它只返回x
与您的值之间的差值最小的键。但是,我不确定您希望如何处理多个键符合您标准的情况
你提到了一个功能,而不是它需要作为一个内衬,但它很容易转换上面的内容:
def find_closest(d, x):
return min(d, key=lambda k: abs(d[k] - x))
closest = find_closest(d, 8) # 'r'
答案 1 :(得分:0)
您可以使用词典理解来生成一个不含x
的新词典,只需一行代码。
my_dict = {'one' : 1, 'two' :2, 'five' : 5, 'three' : 3}
bad = 5
output = {k: v for k, v in my_dict.items() if v != bad}
print( max(output.values()) )