我想做一个列表理解,对两个列表中的元素进行哈希处理。我以为它会是这样的:
hashes = [hashlib.md5().update(a + b).digest() for a, b in zip(f,l)]
(假设 f
和 l
中的元素已正确编码)
我无法做到这一点,我需要结合使用辅助函数
def update_digest(s):
h = hashlib.md5()
h.update(s)
return h.digest()
似乎 update()
方法没有返回用于顺序调用的对象实例。我想做一些类似于 'BOB '.strip().lower()
显然,我唯一的动机是在列表理解中使用它。
有办法做到这一点吗?
如果不是,为什么 update()
不返回对象的实例?我觉得有一些我不知道的关于哈希的东西禁止它......
最佳答案
update 方法不返回任何内容,它只是更新调用它的对象。这就是它的设计方式。
但是您可以省略更新并将要散列的数据直接提供给构造函数,因此您不需要辅助函数:
hashlib.md5("foobar").digest()
您的调用可能如下所示:
hashes = [hashlib.md5(a+b).digest() for a, b in zip(f,l)]
关于Python hashlib - 列表理解的更新和摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755263/