python —— 使用hash函数实现类似字典功能的值的存取操作

代码:

s_dict = [[] for _ in range(10)]

order_list = []

# s_dict = [[['a', 1], ['b', 2]], [['c', 3], ['d', 4]], [...], ..., ]
# 'a' key  1 value
# ['a', 1], ['b', 2] hash值取模映射后同一个空间

def dict_set(key, value):
    # 先判断是否存在
    r = dict_get(key)
    if r is not None:
        # raise KeyError("Key already exists")
        for item in s_dict[hash(key)%10]:
            if item[0] == key:
                item[1] = value
                break
    else: # None, 不存在,可以加入
        s_dict[hash(key)%10].append([key, value])
        order_list.append(key)

def dict_get(key):
    for item in s_dict[hash(key)%10]:
        if item[0] == key:
            return item[1]
    return None

dict_set("a", 1)
dict_set("b", 2)
dict_set("c", 3)
dict_set("d", 4)

print(s_dict, "-"*20)

print(dict_get("a"))
print(dict_get("b"))
print(dict_get("c"))
print(dict_get("d"))

print(s_dict, "-"*20)

dict_set("a", 100)
dict_set("b", 200)
dict_set("c", 300)
dict_set("d", 400)

print(s_dict, "-"*20)

print(dict_get("a"))
print(dict_get("b"))
print(dict_get("c"))
print(dict_get("d"))

print(s_dict, "-"*20)
print(order_list)



运行结果:

image


posted on 2025-12-10 19:33  Angry_Panda  阅读(0)  评论(0)    收藏  举报

导航