哈希表(实现 Python 中的集合 set)

哈希,实现,python,集合,set · 浏览次数 : 7

小编点评

## 博客内容摘要 博客文章介绍了两种数据结构的实现:**链表**和**哈希表**。 **链表**是一种线性结构,节点之间通过指针链接,每个节点保存一个数据项。链表实现简单高效的单向数据访问。 **哈希表**是一种非线性结构,键值对存储在链表中,键通过哈希函数计算出对应的位置。哈希表实现高效的键值查找和插入。 文章还说明了如何使用这两个数据结构实现链表和哈希表的实现,并提供了`__repr__`方法的实现。 **具体实现代码:** 文章没有提供具体的代码实现,但可以通过阅读博客文章中代码的注释来推断代码的结构。 **总结:** 博客文章为读者介绍了两种常见数据结构的实现方式,并提供了相关的知识和代码示例。

正文

博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-


class LinkList:
    class Node:
        def __init__(self, item=None):
            self.item = item
            self.next = None

    class LinkListIterator:
        def __init__(self, node):
            self.node = node

        def __next__(self):
            if self.node:
                cur_node = self.node
                self.node = cur_node.next
                return cur_node.item
            else:
                raise StopIteration

        def __iter__(self):
            return self

    def __init__(self, iterable=None):
        self.head = None
        self.tail = None
        if iterable:
            self.extend(iterable)

    def append(self, obj):
        s = LinkList.Node(obj)
        if not self.head:
            self.head = s
            self.tail = s
        else:
            self.tail.next = s
            self.tail = s

    def extend(self, iterable):
        for obj in iterable:
            self.append(obj)

    def find(self, obj):
        for n in self:
            if n == obj:
                return True
        else:
            return False

    def __iter__(self):
        return self.LinkListIterator(self.head)

    def __repr__(self):
        return "<<" + ", ".join(map(str, self)) + ">>"


# 类似于集合的结构
class HashTable:
    def __init__(self, size=101):
        self.size = size
        self.T = [LinkList() for _ in range(self.size)]

    def h(self, k):
        return k % self.size

    def insert(self, k):
        i = self.h(k)
        if self.find(k):
            print("Duplicated Insert.")
        else:
            self.T[i].append(k)

    def find(self, k):
        i = self.h(k)
        return self.T[i].find(k)


ht = HashTable()

ht.insert(0)
ht.insert(1)
ht.insert(3)
ht.insert(102)
ht.insert(508)

print(",".join(map(str, ht.T)))
print(ht.find(203))
print(ht.find(3))

与哈希表(实现 Python 中的集合 set)相似的内容:

哈希表(实现 Python 中的集合 set)

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class LinkList: class Node: def __init__(self, item=None): self.item = item self.next =

[转帖]JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64 - Python/JS实现

https://bbs.huaweicloud.com/blogs/386139 【摘要】 本文仅仅介绍了常见的一些JS加密,并记录了JS和Python的实现方式 常见的加密算法基本分为这几类: (1)base64编码伪加密 (2)线性散列算法(签名算法)MD5 (3)安全哈希算法 SHAI (4)

Dotnet算法与数据结构:Hashset, List对比

哈希集A 是存储唯一元素的集合。它通过在内部使用哈希表来实现这一点,该哈希表为基本操作(如添加、删除和包含)提供恒定时间平均复杂度 (O(1))。此外,不允许重复元素,使其成为唯一性至关重要的场景的理想选择。另一方面,表示按顺序存储元素的动态数组。它允许重复元素并提供对元素的索引访问,使其适用于需要

[转帖]redis中的bigkey问题

https://cdn.modb.pro/db/459810 什么是bigkey bigkey就是redis key/value体系中的大value问题。我们知道redis的底层数据存储结构中,有多种数据结构的实现。 String: 简单动态字符串 List: 双向链表、压缩列表 Hash: 哈希表

[转帖]图解一致性哈希算法,看这一篇就够了!

http://blog.itpub.net/70024420/viewspace-2925492/ 接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。 一、背景 在具体介绍一致性哈希算法之前,先问一个

解码 xsync 的 map 实现

解码 xsync 的 map 实现 最近在寻找 Go 的并发 map 库的时候,翻到一个 github 宝藏库,xsync (https://github.com/puzpuzpuz/xsync) 。这个库提供了一些支持并发的数据结构,计数器Counter,哈希 Map,队列Queue。我着重看了下

socket 到底是个啥

哈喽大家好,我是咸鱼 我相信大家在面试过程中或多或少都会被问到这样一个问题:你能解释一下什么是 socket 吗 我记得我当初的回答很是浅显:socket 也叫套接字,用来负责不同主机程序之间的网络通信连接,socket 的表现方式由四元组(ip地址:端口)组成 那么今天,咸鱼将跟大家打开 sock

面试日记 | 安永

> 网络安全研究 ## 一面 - 自我介绍 - 项目 - 实习 - 职业规划 ## 二面 - 自我介绍 - 密码基础 - 密码体制 - 常见密码算法 - 哈希的特点 - 给出场景,提出解决方案 ## 三面 + 自我介绍 + 介绍隐私计算 + 技术 + 使用场景 + 解决方案 + 未来规划

Rendezvous hashing算法介绍

## Rendezvous hashing Rendezvous hashing用于解决分布式系统中的分布式哈希问题,该问题包括三部分: 1. **Keys**:数据或负载的唯一标识 2. **Values**:消耗资源的数据或负载 3. **Servers**:管理数据或负载的实体 例如,在一个分

[转帖]Redis 运维实战 第06期:Bigkey

https://cloud.tencent.com/developer/article/1986828 1 什么是 Bigkey 下面这两种情况,在很多互联网公司都被认为是 Bigkey: 字符串类型:一般认为超过 10 KB 就是 Bigkey 非字符串类型:哈希、列表、集合、有序集合,体现在元素