如何使用哈希表(有可能吗?)来查询属于同一对象的多个参数?
让我解释一下。
如果我有以下对象数组
persons = [{name: "AA"}, {name: "BB"}, {name: "CA"}]
我想将它们存储在哈希表中,使用name
作为value
hashtable.put(persons[0]); // will compute hash("AA")
hashtable.put(persons[1]); // will compute hash("BB")
hashtable.put(persons[2]); // will compute hash("CA")
这将使我可以非常快速地通过name
查询哈希表。
我的问题是,是否有任何哈希表实现可让我查询像这样的更复杂对象的多个参数
persons = [{name: "AA", city: "XX"}, {name: "BB", city: "YY"}, {name: "CA", city: "ZZ"}]
例如。寻找names = "AA"
和cities = "ZZ"
如果哈希表不适合此类操作,哪种算法或数据结构最适合此类操作?
答案 0 :(得分:2)
在python中,您可以在哈希图中将tuples
用作keys
:
persons = [{name: "AA", city: "XX"}, {name: "BB", city: "YY"}, {name: "CA", city: "ZZ"}]
hashmap = {}
for d in persons:
hashmap[(d["name"], d["city"])] = ...
然后,您可以像这样查询您的哈希图:
hashmap[(name, city)]
在其他语言中,您应该能够实现类似的功能(使用元素组作为键)。这可能需要implementing a custom hash,但是哈希映射仍然是正确的数据结构。
答案 1 :(得分:1)
哈希表需要完整的密钥才能知道。如果一个键包含多个字段,甚至一个未知字段都不起作用。
也许您正在寻找分区散列函数之类的东西:
http://mlwiki.org/index.php/Partitioned_Hash_Function_Index
在支持多维索引的关系数据库中使用。