python实现哈希表
#! /usr/bin/env python
#coding=utf-8
#实现哈希表(线性地址再散列)
def ChangeKey(key,m,di):
key01=(key+di) % m
return key01
a=raw_input("Please entry the numbers:\n").split()
m=len(a)
dict01={}
for i in a:
key=int(i)%m
if "%s"%key in dict01:
NewKey=ChangeKey(key,m,1)
while "%s"%NewKey in dict01: #因为下面的dict01的key值是以字符串来保存,因此这里作判断时也要用字符串格式
NewKey=ChangeKey(NewKey,m,1)
dict01["%s"%NewKey]=int(i)
else:
dict01["%s"%key]=int(i)
print dict01
相关推荐
-
js中哈希表的几种用法总结
1. 复制代码 代码如下: <html><head><script type="text/javascript">// by Go_Rush(我们) from http://www.jb51.net/ var hash={ "百度" :"http://www.baidu.com/", "Google" :"http://www.go
-
JavaScript中实现键值对应的字典与哈希表结构的示例
字典(Dictionary)的javascript实现 编程思路: 使用了裸对象datastore来进行元素存储: 实现了两种得到字典长度的方法,一种为变量跟踪,一种为实时计算. 代码: function(){ "use strict"; function Dictionary(){ this._size = 0; this.datastore = Object.create(null); } Dictionary.prototype.isEmpty = function(){ ret
-
C++ 实现哈希表的实例
C++ 实现哈希表的实例 该散列表的散列函数采用了除法散列函数.乘法散列函数.全域散列函数,每一个槽都是使用有序单向链表实现. 实现代码: LinkNode.h #include<iostream> using namespace std; class Link; class LinkNode { private: int key; LinkNode* next; friend Link; public: LinkNode():key(-1),next(NULL){} LinkNode(int
-
java中哈希表及其应用详解
哈希表也称为散列表,是用来存储群体对象的集合类结构. 什么是哈希表 数组和向量都可以存储对象,但对象的存储位置是随机的,也就是说对象本身与其存储位置之间没有必然的联系.当要查找一个对象时,只能以某种顺序(如顺序查找或二分查找)与各个元素进行比较,当数组或向量中的元素数量很多时,查找的效率会明显的降低. 一种有效的存储方式,是不与其他元素进行比较,一次存取便能得到所需要的记录.这就需要在对象的存储位置和对象的关键属性(设为 k)之间建立一个特定的对应关系(设为 f),使每个对象与一个唯一的存储位置
-
php内核解析:PHP中的哈希表
PHP中使用最为频繁的数据类型非字符串和数组莫属,PHP比较容易上手也得益于非常灵活的数组类型. 在开始详细介绍这些数据类型之前有必要介绍一下哈希表(HashTable). 哈希表是PHP实现中尤为关键的数据结构. 哈希表在实践中使用的非常广泛,例如编译器通常会维护的一个符号表来保存标记,很多高级语言中也显式的支持哈希表. 哈希表通常提供查找(Search),插入(Insert),删除(Delete)等操作,这些操作在最坏的情况下和链表的性能一样为O(n). 不过通常并不会这么坏,合理设计的哈希
-
使用python实现哈希表、字典、集合操作
哈希表 哈希表(Hash Table, 又称为散列表),是一种线性表的存储结构.哈希表由一个直接寻址表和一个哈希函数组成.哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标. 简单哈希函数: 除法哈希:h(k) = k mod m乘法哈希:h(k) = floor(m(kA mod 1)) 0<A<1 假设有一个长度为7的数组,哈希函数h(k) = k mod 7,元素集合{14, 22, 3, 5}的存储方式如下图: 哈希冲突 由于哈希表的大小是有限的,而要存储的值的总数量是无限的
-
python实现哈希表
复制代码 代码如下: #! /usr/bin/env python#coding=utf-8#实现哈希表(线性地址再散列) def ChangeKey(key,m,di): key01=(key+di) % m return key01 a=raw_input("Please entry the numbers:\n").split()m=len(a)dict01={}for i in a: key=int(i)%m if "%s"%key
-
C++中的数组、链表与哈希表
目录 数组和链表 数组 链表 什么是链表? 链表的操作 双向链表(list) list的成员函数 哈希表 什么是哈希表? 哈希碰撞 哈希表应用场景 构建哈希表 哈希表基本使用 Leetcode对应题目 前缀和 差分数组 滑动窗口 二分查找 数组和链表 C++的数组和链表分别是什么?分别有什么种类?它们都有什么特性?针对这些特征,使用情形是什么? 数组 什么是数组? 一个数组就像是一个变量,它可以存储一组值,但是所有值都是相同的数据类型. 一个int数组定义:int hours [6] 该数组类型
-
python之sqlalchemy创建表的实例详解
python之sqlalchemy创建表的实例详解 通过sqlalchemy创建表需要三要素:引擎,基类,元素 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String 引擎:也就是实体数据库连接 engine = create_engine('mysql+pymysql://go
-
Perl哈希表用法解析
本文和大家重点讨论一下Perl哈希表的概念,Perl语言和其他编程语言各有各的特点,这里和大家分享一下Perl哈希表的概念,其实Perl哈希表是一种结构. Perl哈希表Perl哈希表是一种结构.key/value.访问Perl哈希表元素$Perl哈希表{$some_key}当给Perl哈希表选择名字时,最好这样思考:Perl哈希表元素的名字和key之间可以用for来连接.如thefamily_nameforfredisflintstone. 要引用整个Perl哈希表,使用百分号(%)作为前缀.
-
js实现HashTable(哈希表)的实例分析
一.javascript哈希表简介 javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascript里面若没有,感觉非常不顺手.细细看来,其实javascript的object的属性其实与哈希表非常类似. 如: var person = {}; person["name"] = "关羽"; 我们只需要在其基础上再封装一些HashTable的函数,就能够得到一个精简版的哈希表. 加入函数如下: 函数名 说明 返回值 add
-
python查询sqlite数据表的方法
本文实例讲述了python查询sqlite数据表的方法.分享给大家供大家参考.具体实现方法如下: import sqlite3 as db conn = db.connect('mytest.db') conn.row_factory = db.Row cursor = conn.cursor() cursor.execute("select * from person") rows = cursor.fetchall() for row in rows: print("%s
-
javascript 哈希表(hashtable)的简单实现
首先简单的介绍关于属性的一些方法: 属性的枚举: for/in循环是遍历对象属性的方法.如 复制代码 代码如下: var obj = { name : 'obj1', age : 20, height : '176cm' } var str = ''; for(var name in obj) { str += name + ':' + obj[name] + '\n'; } alert(str); 输出为:name:obj1 age:20 height:176cm 检查属性是否存在: in运算
-
C#使用foreach遍历哈希表(hashtable)的方法
本文实例讲述了C#使用foreach遍历哈希表(hashtable)的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collection; namespace HashSampleApplication1 { class Program { static void Main() { Hashtable hash = new Hashtable(); hashtable[1] = "kaka"; hashtable[2] = &qu
-
浅谈哈希表存储效率一般不超过50%的原因
本文主要是讲"哈希表的存储效率一般不超过50%"的原因. Hash Table 常用于频繁进行 key/value 模式的查找中.(查找模式,如匹配查找) 哈希表最大的优点在于查找速度快,但存储时可能发生collision(冲突). 哈希表大多使用open addressing来解决collision,此时search的时间复杂度计算公式为: 1/( 1 - n/m ) 其中,n与m分别表示存储的记录数与哈希表的长度,即装填因子( load factor ) 故,若哈希表半满,即 n/
随机推荐
- springboot+maven快速构建项目的示例代码
- 探索Java中的equals()和hashCode()方法_动力节点Java学院整理
- PHP中file_get_contents高級用法实例
- 第七章 php自定义函数实现代码
- windows 中 \r\n 区别于 类unix中的\n 疑问说明
- vue-resouce设置请求头的三种方法
- Java中几个Reference常见的作用详解
- PHP对象相互引用的内存溢出实例分析
- NodeJS自定义模块写法(详解)
- 轻松掌握Java桥接模式
- vbs shellcode转换escape加密
- MySQL中基本的用户和权限管理方法小结
- Nodejs关于gzip/deflate压缩详解
- JQuery菜单效果的两个实例讲解(3)
- 键盘上下键移动选择table表格行的js代码
- apache 80端口被iis或其他服务占用怎么办
- iOS毕业设计之天气预报App
- FTPClientHelper辅助类 实现文件上传,目录操作,下载等操作
- MySQL5.6.22安装配置方法图文教程
- PHP面向对象类型约束用法分析