【问题标题】:Python hashlib - Update and Digest for list comprehensionPython hashlib - 列表理解的更新和摘要
【发布时间】:2016-01-12 22:50:10
【问题描述】:

我想做一个列表理解,从 2 个列表中散列元素。我假设它看起来像这样:

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() 不返回对象的实例?我觉得有一些我不知道的关于禁止它的哈希...

【问题讨论】:

    标签: python list syntax list-comprehension hashlib


    【解决方案1】:

    update 方法不返回任何内容,它只是更新调用它的对象。这就是它的设计方式。

    但是你可以省略更新并将你想要散列的数据直接提供给构造函数,所以你不需要辅助函数:

    hashlib.md5("foobar").digest()
    

    您的电话可能如下所示:

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

    【讨论】:

    • 为了将来参考,在 Python 3 中,ab 必须明确编码为 ASCII 才能使其工作。
    猜你喜欢
    • 2019-08-23
    • 2012-12-07
    • 2011-12-11
    • 1970-01-01
    • 2012-04-28
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多