Python散列函数

Python散列函数,python,hash,Python,Hash,在python中,散列层次结构(类似于文件结构)的好方法是什么 我可以将整个层次结构转换为一个虚线字符串,然后对其进行散列,但是有没有更好(或更有效)的方法来做到这一点,而不必一直来回 我可能希望散列的结构示例如下: a -> b1 -> c -> 1 -> d a -> b2 -> c -> 2 -> d a -> c -> 1 -> d 如果您可以作为元组访问层次结构组件,只需对其进行散列即可-元组是可散列的。在与分隔字符串

在python中,散列层次结构(类似于文件结构)的好方法是什么

我可以将整个层次结构转换为一个虚线字符串,然后对其进行散列,但是有没有更好(或更有效)的方法来做到这一点,而不必一直来回

我可能希望散列的结构示例如下:

a -> b1 -> c -> 1 -> d
a -> b2 -> c -> 2 -> d
a -> c -> 1 -> d

如果您可以作为元组访问层次结构组件,只需对其进行散列即可-元组是可散列的。在与分隔字符串的转换过程中,您可能不会获得很多收益,但这只是一个开始


如果这没有帮助,也许您可以提供有关如何存储层次结构/路径信息的更多信息。

您可以通过实现


因此,您可以简单地向存储层次结构的对象添加一个合适的
\uuuuuu hash\uuuu()
方法,例如递归计算哈希值等。

您希望如何访问层次结构

如果您总是要检查完整路径,那么按照建议,使用元组: 例如:

但是,如果要执行“快速查找”a->b1下面的所有项”之类的操作,则将其存储为嵌套哈希表可能更有意义(否则必须遍历所有项以查找插入的项)

为此,defaultdict可能是最简单的存储方式。例如:

from collections import defaultdict

def new_dict(): return defaultdict(new_dict)
d = defaultdict(new_dict)

d["a"]["b1"]["c"][1]["d"] = "test"
d["a"]["b2"]["c"][2]["d"] = "test2"
d["a"]["c"][1]["d"] = "test3"

print d["a"]["c"][1]["d"]  # Prints test3
print d["a"].keys()        # Prints ["c", "b1", "b2"]

通过层次结构,您是指单个文件的路径组件列表,即[“usr”、“local”、“test”、“myfile”]?Downmoding,问题非常不清楚且令人困惑。添加了一个示例以使其更清楚…“->“示例中的符号是什么意思?什么实际的Python数据结构包含创建层次结构的源数据?+1。python不是javascript,字典键可以不仅仅是字符串。不幸的是,它也不是Lua,其中键可以是任何值
from collections import defaultdict

def new_dict(): return defaultdict(new_dict)
d = defaultdict(new_dict)

d["a"]["b1"]["c"][1]["d"] = "test"
d["a"]["b2"]["c"][2]["d"] = "test2"
d["a"]["c"][1]["d"] = "test3"

print d["a"]["c"][1]["d"]  # Prints test3
print d["a"].keys()        # Prints ["c", "b1", "b2"]