【纪录】Hash about

backup a easy implement

复制代码
# coding: utf-8


def add(k, v):
    pass


def get(target):
    pass


class LinearMap(object):
    """线性表结构"""
    def __init__(self):
        self.items = []

    def add(self, k, v):
        self.items.append((k, v))

    def get(self, k):
        for key, val in self.items:
            if key == k:
                return val
        raise KeyError


class BetterMap(object):
    """利用 LinearMap 对象作为子表,建立更快的查询表"""
    def __init__(self, n=100):
        self.maps = []          # 总表格
        for i in range(n):
            self.maps.append(LinearMap())

    def find_map(self, k):
        index = hash(k) % len(self.maps)
        return self.maps[index]

    def add(self, k, v):
        m = self.find_map(k)
        m.add(k, v)

    def get(self, k):
        m = self.find_map(k)
        return m.get(k)


class HashMap(object):
    def __init__(self):
        self.maps = BetterMap(2)
        self.num = 0

    def get(self, k):
        return self.maps.get(k)

    def add(self,k, v):
        if self.num == len(self.maps.maps):
            self.resize()
        self.maps.add(k, v)
        self.num += 1

    def resize(self):
        new_maps = BetterMap(self.num * 2)
        for m in self.maps.maps:
            for k, v in m.items:
                new_maps.add(k, v)

        self.maps = new_maps
复制代码

 

Reference:

https://www.cnblogs.com/hanahimi/p/4765265.html  hash 表学习笔记

http://python.jobbole.com/86522/?utm_source=blog.jobbole.com&utm_medium=relatedPosts  Python源码分析-PyDictObject

https://www.nosuchfield.com/2016/07/29/the-python-implementationp-of-HashTable/  HashTable 的 Python 实现

https://harveyqing.gitbooks.io/python-read-and-write/content/python_advance/python_dict_implementation.html  Python字典实现

posted @   piperck  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
阅读排行:
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
· 精选4款基于.NET开源、功能强大的通讯调试工具
· 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
· 大模型工具KTransformer的安装
历史上的今天:
2017-10-26 B站弹幕姬(🐔)分析与开发(下篇)
点击右上角即可分享
微信分享提示