sách gpt4 ăn đã đi

python 2.7 存在于字典中

In lại 作者:太空狗 更新时间:2023-10-29 20:52:11 25 4
mua khóa gpt4 giày nike

我想测试字典中是否存在键,因为“如果键不在字典中:做某事”我已经多次这样做了,但这次它的行为很奇怪。

特别是:

termCircuit = termCircuitMap[term]

返回键错误

当我在 Eclipse PyDev 中调试此代码时,我得到以下信息(使用表达式):

term in termCircutiMap # prints False
term in termCircuitMap.keys() # prints True

有人知道这是怎么可能的吗?我认为如果某些东西“在”键集中,那么它就在“字典中”。

我附上了评估的屏幕截图。

http://img836.imageshack.us/img836/1274/screenshotpython.png

非常感谢您的解释:)

câu trả lời hay nhất

如果您的 key 的 __hash__ 函数未正确定义,您可能会看到此行为。例如,以下给出与您描述的大致相同的行为:

nhập khẩu ngẫu nhiên

class Evil(int):
def __hash__(self):
return random.randint(0, 10000)

evil_vals = [Evil(n) for n in range(10)]

dict_with_evil_keys = dict((evil_val, None)
for evil_val in evil_vals)

print evil_vals[0] in dict_with_evil_keys # prints False
print evil_vals[0] in dict_with_evil_keys.keys() # prints True

在这种情况下,我生成随机哈希值,这显然是个坏主意。如果您的键值是可变的,则可能会产生同样效果的不太明显的问题。 (通常,可变值不应该定义 __hash__,也不应该用作字典中的键。)

关于python 2.7 存在于字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200067/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress