Towards understanding dictionaries

前端 未结 2 504
一向
一向 2021-01-21 04:22

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

2条回答
  •  离开以前
    2021-01-21 04:48

    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.

提交回复
热议问题