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)
运行结果:

本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。
如果未特殊标注则为原创,遵循 CC 4.0 BY-SA 版权协议。
posted on 2025-12-10 19:33 Angry_Panda 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号