Python中的哈希映射/字典



遇到了这个leet代码。

prevMap = {} #Value:Index
for i,n in enmuerate(nums):
diff = target - n
if diff in prevMap:
return (prevMap[diff],i)
prevMap[n] = i                  

这是使用哈希图的著名二和问题的摘录。

我是 Python 哈希图的新手,因此没有意识到您可以使用"in"函数直接从字典/哈希图中查找值。但是,我不明白的是最后两行。 倒数第二行试图返回哈希映射中值的索引。根据我过去所知道的,hashMap[index] = value不是应该相反吗?相反的hashMap[value] = index也有效吗?

至于最后一行,我们试图将列表nums放入哈希图中。在这种情况下,它不应该是prevMap[i] = n,因为我们试图将值 n 映射到哈希映射的索引 i 中?

谢谢。

hashMap[index] = value?相反的方法是否也有效,即hashMap[value] = index?

至于最后一行,我们试图将列表编号放入哈希图中。在这种情况下,它不应该是prevMap[i] = n,因为我们试图将值n映射到哈希映射的索引i中吗?

谢谢。

你把事情搞混了。在倒数第二行中,您将返回字典中存储的列表内的索引元组,其中一个值是两个总和的一部分,i它又是列表中的索引 - 而不是两个总和的第二个总和的字典。 在最后一行中,将索引存储在特定值的列表中。

我相信您混淆了列表/词典的工作方式。不能按索引访问字典。仅仅因为语法与[]相同并不意味着访问值的方式相同。

l = ["val1", "val2", "val3", "val4"]
d = {
"key1": "val1",
"key2": "val2"
}
d_with_keys_defined_as_index = {
0: "val1",
1: "val2"
}
# Access first element of list
print(l[0])
# KeyError, a dictionary cannot be accessed by index (except index is explicitly defined as a key)
print(d[0])
# access value by key
print(d["key1"])
# now 0 is explicitly defined as a key, so we can access it using that key. This is still not an access by index though
print(d_with_keys_defined_as_index[0])

最新更新