首页 > 编程语言 >哈希基础知识学习-python版

哈希基础知识学习-python版

时间:2024-05-07 11:23:02浏览次数:27  
标签:输出 cnt python dic 集合 哈希 print 基础知识

哈希


哈希表

根据key直接进行访问的无序数据结构,复杂度为O(1)

哈希表的实现---字典

初始化

d1 = dict()

查找
#使用中括号[]进行查找,括号内为特定的键, 键-值
dic = {"a": 1, "d":0, "e":3}
print(dic["a"]) #输出1
print(dic["z"]) #报错
修改
dic["a"] = 5
print(dic["a"]) #输出5
插入
dic["c"] = 4
#dic更新,字典中多了"c": 4
删除
#使用关键字del删除
del dic["a"]
print(dic["a"])
#dic更新,字典中少了"a": 5
补充

1、keys()方法

dic = {“a”:1, “d”:0, “e”:3}
print(list(dic.keys()))
#返回由键组成的一个列表
#输出【"a", "d", "e"]

2、values()方法

print(list(dic.values()))
#输出[1, 0, 3]

3、items()方法

print(list(dic.items()))
#输出[{"a", 1}, {"d", 0}, {"e", 3}]

4、get()方法

dic = {“a”:1, “d”:0, “e”:3}
print(dic.get("a", 0))
#键a存在,输出对应值1
print(dic.get("z", 0))
#键z不存在,因此输出指定的值0
dic["a"] = dic.get("a", 0) + 1
#修改键值对{"a", 2}
dic["f"] = dic.get("f", 0) + 1
#修改键值对{"f", 1}

5、字典中键的特性

键必须不可变,并且可哈希的(字符串、数字、元组)

可变的数据类型不能作为字典的键(如列表、字典),是不可哈希的

字典的键必须各不相同

计数器类(counter)

​ 作用:特殊哈希表,直接统计变量中出现频率的次数

​ 代码示例

from collections import Counter
	#引用库
	#继承dict()所有方法,包括keys、value
	#cnt统计字符串中所有字符的频率(键为字符,值为该字符出现的频率)
	cnt = Counter("aabbcddd")
	print(cnt)
	#统计元组
	cnt = Counter([1, 1, 3, 4, 2, 2, 1])
	print(cnt)
	#输出值列表
	print(list(cnt.values()))

哈希集合


特点

无序集合

1、哈希集合存储不是键-值对,而是进存储数据的值;

2、哈希集合中的值各不相同;

3、哈希集合中的值必须是可哈希的,如列表不可以成为哈希集合中的值;

4、哈希集合是无序的。

初始化
#初始化一个空集合s1
s1 = set()
#初始化一个非空集合s2,集合无序,{}中的元素顺序不重要
s2 = {0, 1, 2, 3, 4}
s3 = set([0, 1, 2, 3, 4, ])

查找
#如果0存在于s中则输出true
if 0 in s:
	print(True)
插入(add())与删除(remove())
s.add(5)  #s2 = {0, 1, 2, 3, 4, 5}
s.remove(3)  #s2 = {0, 1, 2, 4}
列表与集合之间的转换

1、列表转换为集合

l1 = [1, 2, 2, 3, 4]
s1 = set(l1)
print(s1)
#输出s = {1, 2, 3, 4}

2、集合转换为列表

s2 = {1, 2, 3, 4}
l2 = list(s1)
print(l2)
#输出[1, 2, 3, 4]
比较哈希表和哈希集合
相同点

1、无序; 2、不重复; 3、可哈希的; 4、O(1)复杂度的查找

不同点

1、哈希表存储键- 值对,哈希集合仅存储值

2、哈希表中值可以是任意类型的数据,也可以重复,哈希集合是去重的

3、哈希表中的值可以修改,哈希集合中的值不能修改

标签:输出,cnt,python,dic,集合,哈希,print,基础知识
From: https://www.cnblogs.com/piaoduo-yf/p/18176922

相关文章

  • Python日志管理之Loguru
    1.安装pipinstallloguru2.快速使用fromloguruimportloggerlogger.add("my_log.log",rotation="10MB")#自动分割日志文件logger.info("这是一个信息级别的日志")3.日志器配置方式1.导入即用fromloguruimportlogger,有且只有1个日志器对象,简化配置复杂性......
  • Python模块request去掉headers里请求content-length
    前言全局说明Python模块request去掉headers里请求content-length一、说明当request请求data有参数时,会自动计算长度,并增加content-length值,但有些服务器不接收这样的参数就可能会报错。二、网上方法:2.1requests去掉headers里的content-length来源:https://blog......
  • python测试单元unittest
    深入理解Python单元测试——unittest库的全面指南-知乎(zhihu.com)参考这位博主的python单元测试python里面的unittest库是自带的所以我们直接创建pythonfile选择pythonunittest进行创建之后就会出现测试模块;  第一个框框代表需要测试的函数第二个框框代表测试数据......
  • 1.python标准库概览
    python3标准库中的模块os模块:os模块提供了很多与操作系统交互的函数,例如创建、移动、删除文件和目录,以及访问环境变量等sys模块:sys模块提供了与python解释器和系统相关的功能,例如解释器的版本和路径,以及stdin、stdout、stderr相关的信息time模块:time模块提供了处理时间的函......
  • Python基础知识——缩进、标识符、保留字
    标识符标识符就是程序中,使用的各种名称,例如:变量名、常量名、类名等等。在Python中,对标识符格式的要求与C/C++、Java等差不多:第一个字符必须是字母表中的字母或下划线_;标识符的其他的部分,由字母、数字和下划线组成;标识符对大小写敏感;标识符不能与保留字相同。比如:nu......
  • 代理 mitmproxy Python非命令行启动 使用笔记(一)
    代理mitmproxyPython非命令行启动使用笔记(一)mitmproxyPython非命令行启动在进行APP应用操作时,难免会遇到抓包操作,于是我们这里使用mitmproxy来完成这能力目录mitmproxy简介mitmproxy常用的命令行启动mitmproxy非命令行脚本直接启动,两种方式简介mitmproxy是......
  • GUI利器 python界面开发PySimpleGUI
    大家好,很多人都想写一个自己的桌面程序,那么PySimpleGUI 是一个非常好的选择,它旨在简化GUI(图形用户界面)的创建过程。它基于几种流行的PythonGUI库,如tkinter、Qt、WxPython和Rem)i,但提供了一个更简单直观的接口。通过PySimpleGUI,即使是没有图形界面开发经验的开发者也可以......
  • 一个惊艳的 python 库:PyWebIO,用 Python 写网站
    大家好,今天给大家介绍另一个简单而强大的web库--PyWebIO,它能让你的Python脚本快速拥有一个交互式的网页界面。想象一下,你不需要懂得前端开发,就能创建出用户友好的网页应用,今天,我们就来聊聊PyWebIO,看看它如何让Pythonweb开发变得更加简单有趣。为什么选择PyWebIO?1. 快速开发......
  • python实战练习题二
    """第一题:求解回文字符串回文是一个正读和反读都一样的字符串。例如:abcba12321是回文字符串hello123456不是回文字符串"""s=input("请输入字符串:")s2=s[::-1]#字符串逆序ifs==s2:print("{}是回文字符串!".format(s))else:pr......
  • python常见的实战练习题一
    """第一题:求解水仙花数水仙花数,也被称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrongnumber),是一个n位数(n≥3),其每个位上的数字的n次幂之和等于它本身。例如,三位数153是一个水仙花数,因为1^3+5^3+3^3=153。在三位数中,除了153,还有370、371和407也是水仙花......