`
lanqiu17
  • 浏览: 17782 次
社区版块
存档分类
最新评论

python简单实现hashmap

阅读更多

最近在学习python, 学起来很不错,在我一个初学者的眼中,这是一门很好的脚本语言。无论学习者有没有编程经验,都可以很好的学习。当然,要想学好,做练习是必不可少的。一些简单的练习,我就不再说了。在这里,我想从学习新语言的同时,正好把忘了的数据结构好好补补。因此,现在我准备实现一个hashmap,只是完成最基础的功能。毕竟,本人也是菜鸟一个,如果写的有误,请指正,勿喷哈。希望与正在学习python的朋友共同学习,交流

下面是我的代码实现


# -*- coding: cp936 -*-
#---------------------------------------------
#                                           
#author chile                             
#version 1.0                                
#date 2014-01-11                                     
#desc  使用hash实现一个映射容器     ,只有简单的实现                             
#                                           
#                                             
#---------------------------------------------


class entry:
    
    def __init__(self,key = None,val = None,_next = ''):
        self.before = None
        self.key = key
        self.value = val
        self.next = _next
        

class hashmap():
    
    def __init__(self,length = 16):
        self.len = length
        self.arr = self.initarr(length)
        self.entry = entry()
        
    def hashcode(self,key):
        return abs(hash(key)) % self.len
    
    def put(self,key,value):
        index = self.hashcode(key)
        root = self.arr[index]
        self.entry = entry(key = key,val = value)
        self.putentry(root, key)
        self.arr[index] = root
        
    def putentry(self,entry,key):
        if isinstance(entry.next,str):
            entry.next = self.entry
        else:
            self.putentry(entry.next, key)
            
    def get(self,key):
        index =  self.hashcode(key)
        entry = self.arr[index]
        if isinstance(entry.next,str):
            return None
        return self.getentry(entry.next, key)
    
    def remove(self,key):
        index = self.hashcode(key)
        root = self.arr[index]
        if not isinstance(root.next,str):
            self.removeentry(root, key)
           
    
    def initarr(self,len):
        arr = []
        for v in range(0,len):
            arr.append(entry())
        return arr
    
    def getentry(self,entry,key):
        _key = entry.key
        if cmp(key,_key) == 0:
            return entry.value
        else:
            self.getentry(entry.next, key)
    
    def removeentry(self,entry,key):
        next = entry.next
        if cmp(next.key,key) == 0:
            entry.next = next.next
        else:
            self.removeentry(next,key)    
        
       
mymap = hashmap()
mymap.put('2', 22)
mymap.put('3', 'vals')
mymap.put('5', 'val5s')
mymap.put('4', 'val4s')
mymap.put('6', 'val6s')
mymap.put('12', 'va12l')
mymap.put('13', 'va13ls')
mymap.put('15', 'val15s')
mymap.put('14', 'val14s')
mymap.put('16', 'val16s')
print mymap.get('3')
print mymap.get('2')
mymap.remove('4')
print mymap.get('14')
        

 

分享到:
评论

相关推荐

    基于Java教你如何半小时搞定python基础

    此外,Python还有列表(list)、元组(tuple)、集合(set)和字典(dict)等复合数据类型,它们分别对应Java的ArrayList、数组、HashSet和HashMap。 在Python中,函数定义使用`def`关键字,函数可以作为返回值,...

    布隆过滤器的概述及Python实现方法

    在Python中实现布隆过滤器可以相对简单,但要确保正确的哈希函数和位数组大小的选择。一个简单的Python实现可以使用bitarray库和mmh3哈希函数库,如上述代码所示。在这个实现中,我们首先初始化一个大小为size的位数...

    统计字符出现的次数 java,python,shell,javacript实现

    统计字符出现的次数 Java、Python、Shell、JavaScript 实现 Statistical Character Appearance Times in Java, Python, Shell, and JavaScript) 统计字符出现的次数是指在一个字符串中统计每个字符出现的次数,这...

    常见数据结构与算法的Python实现及学习笔记.zip

    5. 哈希表(HashMap):提供O(1)的查找效率,广泛用于实现关联数组、缓存、唯一性检查等。 6. 字符串处理:KMP算法、Boyer-Moore算法和Rabin-Karp算法用于字符串匹配;Trie树(字典树)用于高效地存储和查询字符串...

    python转java方法.docx

    此外,Python 的 `None` 类型在 Java 中可能对应为 `null`,而 Python 中的列表和字典则需要转换为 Java 的 `ArrayList` 或 `HashMap`。 2. **语法结构的调整**:Python 使用缩进来表示代码块,而 Java 需要用花...

    Python库 | red-black-tree-mod-1.11.tar.gz

    标题中的"Python库 | red-black-tree-mod-1.11.tar.gz"指的是一种基于Python实现的红黑树数据结构的库,版本为1.11,并被打包成tar.gz格式的压缩文件。红黑树是一种自平衡二叉查找树,它的设计目标是保证在进行插入...

    基于python+Java的疫情爬虫数据分类统计分析的设计与实现【附源码】

    在本项目中,“基于python+Java的疫情爬虫数据分类统计分析的设计与实现”是一个结合了两种编程语言的综合应用,旨在从网络上抓取疫情相关的数据,进行处理、分类和统计分析。该项目的核心目标是利用Python的爬虫...

    Python或Java编写的小作业.zip

    此外,可能还会涉及文件操作、异常处理、数据结构(如栈、队列、堆、图)以及简单的算法实现。 对于Java,作业可能涵盖的内容有:基础语法(如变量、常量、运算符、流程控制)、类与对象(封装、继承、多态)、接口...

    多例模式学习笔记

    下面是一个简单的Java实现示例: ```java public class MultitonExample { private static Map, MultitonExample> instances = new HashMap(); // 私有构造函数 private MultitonExample(String key) { // ...

    pybridge-master.zip

    《安卓调用Python:JNI与PyBridge实现详解》 ...对于轻量级的Python功能,可能有其他更简单的解决方案,如使用纯Java或Kotlin实现。但在需要深度计算或者复杂逻辑的场景下,这种集成方式无疑提供了更多的可能性。

    北大Java作业

    从【压缩包子文件的文件名称列表】"北大Java作业题"来看,这个文件很可能是包含了一系列的Java编程题目,每道题可能是一个独立的代码实现或者逻辑分析,涵盖不同的Java知识点。 以下是一些可能出现在这些作业中的...

    关于java、Python100道题

    8. **网络编程**:使用socket库实现简单的TCP/IP通信。 9. **单元测试**:了解unittest模块,编写和执行单元测试。 10. **数据类型高级操作**:列表推导式,字典推导式,生成器表达式,迭代器和生成器。 通过这...

    代码集和收藏项目目录。包括数据结构,算法,练习等的简单实现以及收藏项目列表。.zip

    JAVA作为面向对象的语言,提供了丰富的内置数据结构,如ArrayList、LinkedList、Stack、Queue、HashSet、HashMap等。学习JAVA数据结构,不仅可以理解其内部实现原理,还能学会如何在实际项目中高效利用这些工具。 ...

    Rust 中 Python 式理解的宏

    宏实现了类似于 Python 中的列表和哈希映射推导式,允许条件和嵌套推导式。Python 语法squares= [x*xforxinrange (10 )]even_squares= [x*xforxinrange (10 )ifx%2==0 ]squares_dict= {key :key*keyforkeyinrange ...

    哈希表实现简单说明-附代码

    哈希表是一种高效的数据结构,它通过特定的哈希函数将键...例如,Python中的`dict`类型、Java的`HashMap`和C++的`std::unordered_map`都是哈希表的典型实现。理解哈希表的工作原理和优化策略对于提升程序性能至关重要。

    jython的用法及学习文档

    private static final HashMap, PythonInterpreter> piMap = new HashMap(); public static JythonFactory getInstance() { return instance; } public Object getJavaObjectFromJythonFile(String ...

    python获取全国城市pm2.5、臭氧等空气质量过程解析

    本文将介绍如何使用Python语言来实现这一过程,并解析获取相关数据的过程。 在开始编写代码之前,需要了解如何利用现有的空气质量数据接口。文章中提到了使用第三方提供的API接口进行数据查询的方式,这比直接爬取...

    学习资料大全v3.7.docx

    6. **深度学习入门**:使用TensorFlow、PyTorch等框架进行简单的神经网络训练。 ### 实际工作需求文档 **知识点概述:** 实际工作需求文档通常涉及以下几个方面: 1. **项目背景**:项目的起因、目的与预期目标...

    华为OD机试C卷- 文件缓存系统(Java & JS & Python).md-私信看全套OD代码及解析

    下面是一个简单的 Java 实现示例,展示了如何设计和实现这个文件缓存系统: ```java import java.util.*; class FileInfo implements Comparable<FileInfo> { String name; int size; int accessCount; long ...

    开放结构化数据服务 OTS.zip

    在JAVA中,除了基本数据类型外,还有ArrayList、LinkedList、HashMap等内置数据结构,它们提供了方便的操作接口,但理解其底层实现仍然是必要的。 Python则以其简洁的语法和强大的标准库受到许多初学者的喜爱。在...

Global site tag (gtag.js) - Google Analytics