为字典内容生成唯一键的最佳方法是什么。我的目的是将每个字典与唯一的 id 或哈希一起存储在文档存储中,这样我就不必从存储中加载整个字典来检查它是否已经存在。具有相同键和值的字典应该生成相同的 id 或 hash。
我有以下代码:
import hashlib
a={'name':'Danish', 'age':107}
b={'age':107, 'name':'Danish'}
print str(a)
print hashlib.sha1(str(a)).hexdigest()
print hashlib.sha1(str(b)).hexdigest()
最后两个打印语句生成相同的字符串。这是一个很好的实现吗?或者这种方法有什么陷阱吗?有一个更好的方法吗?
更新
结合以下答案的建议,以下可能是一个很好的实现
import hashlib
a={'name':'Danish', 'age':107}
b={'age':107, 'name':'Danish'}
def get_id_for_dict(dict):
unique_str = ''.join(["'%s':'%s';"%(key, val) for (key, val) in sorted(dict.items())])
return hashlib.sha1(unique_str).hexdigest()
print get_id_for_dict(a)
print get_id_for_dict(b)