我正在考虑创建一个dict的校验和,以知道它是否被修改过。
目前我有:

>>> import hashlib
>>> import pickle
>>> d = {'k': 'v', 'k2': 'v2'}
>>> z = pickle.dumps(d)
>>> hashlib.md5(z).hexdigest()
'8521955ed8c63c554744058c9888dc30'

也许存在更好的解决方案?
注意:我想创建一个dict的唯一ID来创建一个好的etag。
编辑:我可以在听写中有抽象数据。

最佳答案

像这样:

reduce(lambda x,y : x^y, [hash(item) for item in d.items()])

将dict中每个(key,value)元组的散列值与xor一起使用。
@凯特里·亚历克斯
如果dict包含不可显示的项,则可以执行此操作:
hash(str(d))

或者更好
hash(repr(d))

关于python - Python,dict的校验和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6923780/

10-16 04:01