是否有任何方法来检查某个值附近的值是否在字典的键中?



我需要检查一个值是否接近字典键中的某个值。例如,我下面有一个字典temp,有4个键;1、10、20、30。如果我像这样写代码,它是有意义的。

temp = {1:2, 10:4, 20:5, 30:12}
10 in temp.keys()
>> True
15 in temp.keys()
>> False

但是如果我像这样编码,它显示了我没有预料到的结果。因为x+1 = 10,而且这个值肯定在字典的键中。

x = 9
(x-2 or x-1 or x or x+1 or x+2) in temp.keys()
>>False

我错过什么了吗?我想知道如何解决这个问题。请帮帮我由于

您可以使用any:

>>> temp = {1: 2, 10: 4, 20: 5, 30: 12}
>>> x = 9
>>> any(val in temp.keys() for val in (x - 2, x - 1, x, x + 1, x + 2))
True
>>> any(x + dx in temp.keys() for dx in range(-2, 2 + 1))
True
>>> any(val in temp.keys() for val in range(x - 2, x + 3)))
True
Input: 1 or 2 or 3
Output: 1
Input: 1 and 2 and 3
Output: 3

从上面的例子可以看出。or给出第一个真值and给出最后一个真值

问题在于:

(x-2 or x-1 or x or x+1 or x+2)

这一行不充当布尔表达式。相反,它给出了x - 2的值。在您的情况下,它将是77不在键中。所以是False

相关内容

  • 没有找到相关文章

最新更新