I am required to use multiple hashtables, so in c++, I would normally use an std::unordered_map. So far I can understand that I can use a dictionary in Python, so let\'s assume
id(...)
id(object) -> integer
Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (Hint: it's the object's memory address.)
Above is the id
doc string, it says that object's identity is object's memory address, so we can use the id
function to see the variable's memory address:
In your program, I can see the address like this:
def main():
my_dict_1 = {}
my_dict_1['foo'] = 1
my_dict_2 = {}
my_dict_2['foo'] = 2
print(hex(id(my_dict_1['foo'])))
print(hex(id(my_dict_2['foo'])))
if __name__ == '__main__':
main()
This program output this:
0x9a33e0
0x9a3400
We can see that my_dict_1['foo']
and my_dict_2['foo']
have different memory address.
So I think the two dicts should use the same hash function, but the variable's memory address should be the sum of the hash value and a base value. In this way, the two variable will be stored in the different memory areas.