Python中使用any判断值存在后,如何获取并使用该值?
解决方法
原代码的问题在于any()函数仅返回布尔值(是否存在匹配项),不会保留匹配的密钥对象。遍历结束后key变量指向的是列表最后一个元素,而非匹配的那个密钥。要获取并使用匹配的密钥,需要主动捕获匹配项:
方法1:普通遍历查找
matched_key = None for key in publicKeys: # 计算当前密钥的SHA3_256哈希并与输入值对比 if SHA3_256.new(key.export_key()).hexdigest() == hashed_pk: matched_key = key break # 找到匹配项后终止遍历 if matched_key: print(matched_key) # 打印匹配的密钥 else: print("未找到匹配的密钥")
方法2:使用next()配合生成器(更简洁)
# 从生成器中获取第一个匹配的密钥,无匹配时返回None matched_key = next( (key for key in publicKeys if SHA3_256.new(key.export_key()).hexdigest() == hashed_pk), None ) if matched_key: print(matched_key) else: print("未找到匹配的密钥")
两种方法都能精准捕获到匹配的密钥,避免原代码中key变量指向错误元素的问题。
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

