Python哈希表:了解哈希函数与字典

你是否想过Python字典是如何快速与可靠的?答案是它们建立在另一种技术之上:哈希表

了解Python哈希表的工作方式将使你对Python字典的工作方式有更深入了解,这对于Python理解是一个很大的优势,因为字典在Python中几乎无处不在。

哈希函数是一种可以将任意长度的数据映射到固定长度的值(称为hash)的函数

哈希函数具有三个主要特征:

  1. 它们的计算速度很快:计算一条数据的哈希值必须是一项快速的操作。
  2. 它们是确定性的:相同的字符串将始终产生相同的哈希值。
  3. 它们产生固定长度的值:无论您输入的是1个,10个字节还是1万个字节都没有关系,生成的哈希将始终具有固定的预定长度。

哈希函数中另一个很常见的特征是它们通常是单向函数:因此你可以从字符串中获取哈希,但无法从哈希中获取原始字符串。

有很多东西依赖于哈希,而哈希表只是其中之一。

一个具体的例子是,当尝试从Internet下载开源软件时,通常,您还会找到一个附属文件,该文件是文件的签名。此签名只是原始文件的哈希,它非常有用,因为自己计算原始文件的哈希,然后根据网站提供的签名进行检查,则可以确保下载的文件没有已被篡改。

哈希的另一种常见用法是存储用户密码,或许你曾经问过自己为什么忘记网站密码并尝试恢复该密码时,该网站通常允许选择另一个密码而不是将原来选择的密码还给我们?答案是该网站不会存储你选择的整个密码,而只会存储其哈希值。

这样做是出于安全原因,如果某些黑客可以访问站点的数据库,则他们将无法知道您的密码,而只能知道密码的哈希值,并且由于哈希函数通常是单向函数,因此可以确定他们将永远无法从哈希开始找回你的密码。

Python哈希表在开发过程中是最常见的功能,特别是哈希函数与字典的使用。

相关文章

python容器之字典详解

字典与列表类似,也是可变序列,不过不同的是字典是无序的可变序列,它的元素是通过键值对的形式存放的,键是唯一的,值是可变的。字典的主要特征:通过键而不是通过索引来访问字典是无序的可变序列字典是可变的,而...

简析python中的字典

一、字典1、字典是键值对类型:dict{key:value}#key值唯一>>> dict1 = {1:'a',2:'b'}>>> type(dict1)#查看类型...

Python 基础教程五之Python3 字典

前言字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:d =...

Python入门系列20-Python内置数据结构之字典

字典是Python另一种常用的数据结构,在某些编程方面,字典的作用会比列表更方便,比如想利用某一种数据结构来表示一个人的基本信心。我想字典是最适合不过的数据类型了,虽然利用列表也可以实现,但是会比较麻...

Python快速入门教程:字典

一、字典简介字典(dictionary)是Python中非常重要的数据结构,它是一个无序的键值对集合。每个键与一个值关联,键必须是不可变类型(如字符串、数字或元组),而值可以是任意类型。创建字典使用花...

跟我一起学Python-字典(基础)

一.字典的定义语法形式:数据可以重复,键不可以重复变量名 = {key[键]:value[数据] } 1.字典采用 {}表示2.元素采用键值对的形式,键和值之间有冒号。键一般是字符串,具有一定的含义v...