gpt4 book ai didi

python - 如何在 Python 中为字典创建唯一键

转载 作者:太空狗 更新时间:2023-10-29 17:09:44 25 4
gpt4 key购买 nike

为字典的内容生成唯一键的最佳方法是什么。我的目的是将每个字典连同唯一的 ID 或哈希一起存储在文档存储中,这样我就不必从商店加载整个字典来检查它是否已经存在。 具有相同键和值的字典应生成相同的 ID 或哈希值。

我有以下代码:

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)

最佳答案

我更喜欢将 dict 序列化为 JSON 并对其进行哈希处理:

import hashlib
import json

a={'name':'Danish', 'age':107}
b={'age':107, 'name':'Danish'}

# Python 2
print hashlib.sha1(json.dumps(a, sort_keys=True)).hexdigest()
print hashlib.sha1(json.dumps(b, sort_keys=True)).hexdigest()

# Python 3
print(hashlib.sha1(json.dumps(a, sort_keys=True).encode()).hexdigest())
print(hashlib.sha1(json.dumps(b, sort_keys=True).encode()).hexdigest())

返回:

71083588011445f0e65e11c80524640668d3797d
71083588011445f0e65e11c80524640668d3797d

关于python - 如何在 Python 中为字典创建唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com