Python hashlib - 列表理解的更新和摘要

标签 python list syntax list-comprehension hashlib

我想做一个列表理解,对两个列表中的元素进行哈希处理。我以为它会是这样的:

hashes = [hashlib.md5().update(a + b).digest() for a, b in zip(f,l)]

(假设 fl 中的元素已正确编码)

我无法做到这一点,我需要结合使用辅助函数

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/

相关文章:

python - Pandas 如何得到这个?

c++ - C++ 命名空间的简洁语法

python - Python 中有两个条件的 if 语句

python - 将项目添加到列表(如果尚不存在)

c++ - 子列表 C++ 的返回迭代器

javascript - switch语句错误?

python - 使用 Jupyter Notebook 从 ipywidget 函数定义全局变量

php - Python 中是否有 PHP PDO 的等效项?

python - 旋转后的 OpenGL python 和 pygame 翻译不适用于鼠标外观和移动

python - append to a sublist append 到每个子列表