【纪录】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字典实现
【纪录】Hash about的更多相关文章
- 11-散列4 Hashing - Hard Version (30 分)
Given a hash table of size N, we can define a hash function H(x)=x%N. Suppose that the linear probin ...
- sql 查询强制使用HASH连接性能测试比较
HASH JOIN 散列连接 hash join是CBO 做大数据集连接时的常用方式.优化器扫描小表(或数据源),利用连接键(也就是根据连接字段计算hash 值)在内存中建立hash表,然后扫描大表, ...
- Sql优化(一) Merge Join vs. Hash Join vs. Nested Loop
原创文章,首发自本人个人博客站点,转载请务必注明出自http://www.jasongj.com Nested Loop,Hash Join,Merge Join介绍 Nested Loop: 对于被 ...
- Hash查找法在Keil C51中的实现
摘要:散列(hash)是一种重要的存储方法,也是一种常见的查找方法.它是指在记录的存储位置和它的关键字之间建立一个确定的对应关系.本文以射频卡门禁控制器为例,说明用射频卡卡号作为关键字,用Hash查找 ...
- stl源码分析之hash table
本文主要分析g++ stl中哈希表的实现方法.stl中,除了以红黑树为底层存储结构的map和set,还有用哈希表实现的hash_map和hash_set.map和set的查询时间是对数级的,而hash ...
- html5之hash
http://blog.csdn.net/u012028371/article/details/67636395 原文:https://www.studyscript.com/Post/index/i ...
- MySQL(12)---纪录一次left join一对多关系而引起的BUG
MySQL(11)---纪录一次left join一对多关系而引起的bug BUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定.但是由于物流表在保存订单信息的时候 ...
- 纪录一次left join一对多关系而引起的BUG
纪录一次left join一对多关系而引起的BUG MySQL(11)---纪录一次left join一对多关系而引起的bug BUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行 ...
- 在 aws emr 上,将 hbase table A 的数据,对 key 做 hash,写到另外一张 table B
先 scan 原表,然后 bulkload 到新表. 采坑纪录1. bulkload 产生 hfile 前,需要先对 hash(key) 做 repartition,在 shuffle 的 read ...
随机推荐
- C++ 入门[1]
C++编译与执行 主存又称为寄存器,在CPU旁边, 随机访问储存器RAM 即内存
- [转]Oracle 清除incident和trace -- ADRCI用法
在oracle11g中,dump file的目录已经有所改变,bdump和udump整合到trace中,cdump独立出一个. E:\ora11g\app\Administrator\diag\rdb ...
- D. Zero Quantity Maximization(hash+map)
题意:就是让c=a*x+b,给你一个a[],b[],让你尽可能多的让c[]=0,输出有多少. 思路:直接令c=0,则x=-b/a, 也就是一条直线,通过这样就用hash值使相同的k值映射到一起,使用了 ...
- 第1章 从开机加电到main函数之前的过程
主要讲解了80x86cpu在启动的时候时bios如何工作,以及如何最终转换到保护模式. 1.1 启动bios 80x86作为冯诺依曼结构下的cpu,工作模式也是取指执行,即cpu根据cs:ip寄存器的 ...
- 【vue】vue-router的用法
依赖安装:(c)npm install vue-router 过程: import Vue from 'vue'; import Router from 'vue-router'; Vue.use(R ...
- 微信接入arduino
https://blog.csdn.net/liudongdong19/article/details/81072857 一.准备工作. 1.微信公众号,个人的就可以了,不用企业号什么的. ...
- day07----字符编码解码、文件操作(1)
字符编码: 什么是字符编码? 字符编码是将人识别的字符转换成计算机能识别的二进制字符(01),转换的规则就是编码表. 人能识别的字符串 与 计算机能识别的二进制字符 两者之间对应关系构成的结构称为 ...
- org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 '&' 后面
错误信息如下:org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 ‘’&’’ 后面 出现这个错误的原因是在xml中使用&,实际上xml中不支 ...
- gooderp安装
在做ODOO的前提下需要PostgreSQL, SO.... #!/bin/bashPID=`echo $$`echo -e "\033[35m该脚本只在CentOS 7.4.1708版本 ...
- Debug Hacks中文版——深入调试的技术和工具
关键词:gdb.strace.kprobe.uprobe.objdump.meminfo.valgrind.backtrace等. <Debugs Hacks中文版——深入调试的技术和工具> ...