zoukankan      html  css  js  c++  java
  • hashmap



    # 初始化amap, 把列表num_buckets添加到amap,num_buckets用来存hashmap里设置的内容

    def new(num_buckets=256):
    amap = []
    for i in range(num_buckets):
    amap.append([])
    return amap


    # 利用求余来获得一个放置key的位置, hash函数用来获取一个数字或字符串的哈希值, 值为整数
    def hash_key(amap, key):
    return hash(key) % len(amap)


    # 通过bucket_id获取bucket
    def get_bucket(amap, key):
    bucket_id = hash_key(amap, key)
    return amap[bucket_id]


    # 使用enumerate()for循环遍历bucket, key获取索引, ,
    def get_slot(amap, key, default=None):
    bucket = get_bucket(amap, key)
    for i, kv in enumerate(bucket):
    k, v = kv
    if key == k:
    return i, k, v
    return -1, key, default


    # 取值
    def get(amap, key, value):
    i, k, v = get_slot(amap, key)
    return v


    # 设置键值对追加到字典中,保证每个key存储一次
    def set(amap, key, value):
    bucket = get_bucket(amap, key)
    i, k, v = get_slot(amap, key)
    # 如果位置存在, 就代替
    if i >= 0:
    bucket[i] = (key, value)
    # 如果不存在, 就追加到字典中
    else:
    bucket.append((key, value))


    # 通过key删除bucket
    def delete(amap, key):
    bucket = get_bucket(amap, key)
    for i in range(len(bucket)):
    k, v = bucket[i]
    if key == k:
    del bucket[i]
    break


    # 调试打印功能
    def list(amap):
    for bucket in amap:
    if bucket:
    for k, v in bucket:
    print(k, v)



  • 相关阅读:
    南阳118--修路方案(次小生成树)
    Poj3026--Borg Maze(Bfs+Prime)
    sql常识- UNIQUE
    sql常识-FULL JOIN
    sql常识-RIGHT JOIN
    sql常识-LEFT JOIN
    sql常识-INNER JOIN
    sql常识-Join
    sql常识-Alias
    sql常识-BETWEEN 操作符
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/12020197.html
Copyright © 2011-2022 走看看