我正在尝试为DynamoDB中的地图对象内的属性添加索引,但似乎找不到这样做的方法.这是支持的东西还是索引真的只允许标量值?围绕这个的文档似乎非常稀少.我希望索引功能类似于MongoDB,但到目前为止,我使用点语法引用属性索引的方法还没有成功.我们非常感谢您提供的任何帮助或其他信息.
python中可用的最短哈希(文件名可用形式,如hexdigest)是什么?我的应用程序想要保存某些对象的缓存文件.对象必须具有唯一的repr(),因此它们用于"种子"文件名.我想为每个对象生成一个可能唯一的文件名(不是那么多).它们不应该发生冲突,但是如果它们发生了我的应用程序将只是缺少该对象的缓存(并且必须重新索引该对象的数据,这是应用程序的一个小成本).
因此,如果存在一个冲突,我们会丢失一个缓存文件,但是收集的缓存所有对象的节省使得应用程序启动速度更快,因此无关紧要.
现在我实际上正在使用abs(hash(repr(obj))); 那是对的,字符串哈希!还没有找到任何碰撞,但我希望有更好的哈希函数.hashlib.md5在python库中可用,但如果放入文件名,则hexdigest非常长.替代方案,具有合理的抗冲击性?
编辑:用例是这样的:数据加载器获取数据携带对象的新实例.独特的类型有独特的repr.因此,如果存在缓存文件hash(repr(obj)),我将取消该缓存文件并将obj替换为unpickled对象.如果发生碰撞并且缓存是假匹配,我注意到.因此,如果我们没有缓存或具有错误匹配,我改为初始化obj(重新加载其数据).
结论(?)
strpython中的哈希可能已经足够好了,我只担心它的碰撞阻力.但是如果我可以2**16用它来散列对象,那就足够了.
我发现如何采用十六进制哈希(来自任何哈希源)并使用base64紧凑地存储它:
# 'h' is a string of hex digits
bytes = "".join(chr(int(h[i:i+2], 16)) for i in xrange(0, len(h), 2))
hashstr = base64.urlsafe_b64encode(bytes).rstrip("=")
Run Code Online (Sandbox Code Playgroud) 我想为用户生成一个基于整数的唯一 ID(在我的 df 中)。
假设我有:
index first last dob
0 peter jones 20000101
1 john doe 19870105
2 adam smith 19441212
3 john doe 19870105
4 jenny fast 19640822
Run Code Online (Sandbox Code Playgroud)
我想像这样生成一个 ID 列:
index first last dob id
0 peter jones 20000101 1244821450
1 john doe 19870105 1742118427
2 adam smith 19441212 1841181386
3 john doe 19870105 1742118427
4 jenny fast 19640822 1687411973
Run Code Online (Sandbox Code Playgroud)
10 位 ID,但它基于字段的值(john doe 相同的行值获得相同的 ID)。
我研究了散列、加密、UUID,但找不到与这个特定的非安全用例有太多关系。它只是生成一个内部标识符。
感觉我可能以错误的方式解决这个问题,因为我找不到太多关于它的文献!
谢谢
我需要为每个用户生成唯一的帐户 ID。(只有数字)UUID 不能解决这个问题,请帮帮我!
我只想在 Python 3 中对字符串(密码)进行哈希处理。我该怎么做?这样做的简单方法是什么?您能否提供一个编码示例或推荐一个可以使用的模块。