Python中的哈希表相关操作

《生成式AI引发的“认知污染”:社交媒体虚假信息的治理困局》 认知污染与生成式AI“认知污染”指信息环境被大量虚假、误导性内容所充斥,干扰公众对事实的认知判断。在社交媒体时代,虚假信息的生产和传播门槛大幅降低,呈现出工业化、规模化的趋势。近年兴起的生成式人工智能(Generative AI)技术,如大型语言模型(LLM)和深度伪造(deepfake),更是加剧了这一问题。AI可以自动生成看似真实的文本、图像、音视频,将虚假信息批量生产并快速散播到社交平台上。 阅读详情

哈希表相关操作

1. 设置值的默认类型

使用内置模块collections中的defaultdict(func),能够将哈希表的值value的默认类型设置为func。譬如要设置哈希表中value的默认类型为list,其语法如下:

from collections import defaultdict
dic = defaultdict(list)

# dic[0]此时即为一个空列表,可以使用所有的列表操作
dic[0].append(1)
dic[0].extend([2, 3])
  • 如果设置了value的默认类型为list,那么访问key对应的value默认得到一个空列表[]
  • 如果设置了value的默认类型为int,那么访问key对应的value默认得到数字0
  • 如果设置了value的默认类型为str,那么访问key对应的value默认得到空字符串""
    除了设置默认类型,defaultdict()还可以结合lambda匿名函数,设置更加丰富的默认值。譬如想设置value的默认值为1,其语法如下:
from collections import defaultdict
dic = defaultdict(lambda: 1)
print(dic[0])    # 会输出1

dic = defaultdict(lambda: "aabbcc")
print(dic[0])    # 会输出"aabbcc"

2. 计数器

在内置模块collections中引入Counter(),可以直接统计字符串、列表等可迭代对象的元素频率。

from collections import Counter

lst = [1, 1, 2, 3, 3]
cnt = Counter(lst)

注意,Counter()的value默认是0,如果某一个键key并不位于cnt中,也可以访问或添加。如以下语句是合法的:

from collections import Counter

lst = [1, 1, 2, 3, 3]
cnt = Counter()

# 更新lst中各个数字num的频率
for num in lst:
    cnt[num] += 1

# 访问数字1对应的频率
print(cnt[1])

如果使用dict(),那么上述代码逻辑应该修改为

lst = [1, 1, 2, 3, 3]
cnt = dict()

# 更新lst中各个数字num的频率
for num in lst:
    # 需要判断num是否已经作为key存入cnt中
    # 如果不存在,需要新建key-value对
    # 设置cnt[num]为1,表示num出现了1次
    if num not in cnt:
        cnt[num] = 1
    # 如果存在,才可以直接更新cnt[num]
    else:
        cnt[num] += 1
        
# 访问数字1对应的频率
print(cnt[1])

显然,如果直接使用dict(),并不是不能够完成计数的功能,只是在代码逻辑上需要多加一个判断,较为冗长。如果没有加上述判断,直接执行以下代码,

lst = [1, 1, 2, 3, 3]
cnt = dict()

# 更新lst中各个数字num的频率
for num in lst:
    cnt[num] += 1

# 访问数字1对应的频率
print(cnt[1])

则会出现键错误的报错

KeyError: 1

表示1这个key不位于dict()中。

换句话说,直接使用Counter()就可以不用像dict()那样繁琐地判断key是否位于dict()中。所以在需要进行元素频率记录的时候,直接使用Counter()会比使用dict()更加方便。
对于defaultdict()来说,也是同理的。在已知所储存的value的类型时,用defaultdict()可以避免频繁的判断。

3. 获得键、值或者键值对

哈希表的keys(),values()以及items()方法分别可以获得键、值或者键值对的一个可迭代对象。

dic = {0: 1, 2: 3, 4: 5}

# 遍历key方法1
# 分行输出:0 2 4
for k in dic:
    print(k)
    
# 遍历key方法2
# 分行输出:0 2 4
for k in dic.keys():
    print(k)

# 获得哈希表中所有键key组成的一个列表
# keys = [0, 2, 4]
keys = list(dic.keys())

# 遍历values
# 分行输出:1 3 5
for v in dic.values():
    print(v)
    
# 获得哈希表中所有值value组成的一个列表
# values = [1, 3, 5]
values = list(dic.values())

# 遍历key和values
# 分行输出:0 1    2 3    4 5
for k, v in dic.items():
    print(k, v)  
    
# 获得哈希表中所有键值对(key, value)组成的一个二元列表
# pairs = [(0, 1), (2, 3), (4, 5)]
pairs = list(dic.items())
Adams Car——Adams car与Simulink联合仿真 Adams与simulink悬架联合仿真 阅读详情

相关推荐

3D视觉入门必看:深度图、点云图、IR图、RGB图像到底有什么区别?

本文深入解析了3D视觉中深度图、点云图、IR图与RGB图像的核心区别。深度图记录像素距离,是连接2D与3D的桥梁;点云图是显式的三维坐标集合;IR图感知红外光强度;RGB图像则提供颜色纹理。理解其信息维度和应用场景,是进行机器人导航、三维重建等任务的基础。

year5的博客 342

算法题Python常用内置函数、方法、技巧汇总(其二:哈希表)

60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁。,**并不是不能够完成计数的功能,只是在代码逻辑上需要多加一个判断,**较为冗长。如果没有加上述判断,直接执行以下代码,每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!所以在需要进行元素频率记录的时候,直接使用。匿名函数,设置更加丰富的默认值。中,也可以访问或添加。可以避免频繁的判断。

weixin_48157259的博客 716

保姆级教程:用GROMACS 2022.4的拉伸模拟(SMD)加速蛋白-蛋白组装过程

本文详细介绍了如何使用GROMACS 2022.4的拉伸分子动力学模拟(SMD)技术加速大蛋白组装过程。通过CHARMM36力场和SMD技术,将传统需要数月的蛋白结合过程缩短至数天,大幅提升模拟效率。文章包含参数设计、索引组创建、周期性边界处理等实战技巧,并提供了完整的GPU加速工作流和常见问题解决方案。

weixin_30338481的博客 445

【Python 数据结构 15.哈希表】

哈希表的每个数据,保留了链表头结点和尾结点,插入前需要先进行查找,如果找到的位置链表非空,则插入尾结点,并且更新尾结点。哈希表的每个数据就是一个键,插入之前需要先进行查找,如果找到的位置未被插入则执行插入,否则找到下一个未被插入的位置进行插入。如果键存在于字典中,则返回对应的值;,无论是开放地址法,还是链地址法,都可以实现哈希表,我们只需要选择其中一种即可。计算它的哈希值,对数组长度 n 取模以后,找到合适的位置,遍历这个位置上的链表,,只要哈希表足够大,总能找到一空的位置,并且记录下来作为它的哈希值,

m0_73983707的博客 3211

USB2.0信号完整性测试之眼图

名称线缆颜色引脚描述红色绿色白色GND黑色。

qq_53766840的博客 3283

Oracle-如何修复undo坏快

undo出现坏快,导致数据库宕机,无法启动

qqqyyy0422的博客 570

《数据结构和算法》— 哈希表

1.哈希表:也叫散列表,每一个元素都有对应的key和value,我们可以通过对应的key找到需要的value 举个例子: 1:韩梅梅 2:李雷 好处是可在一堆数据中,迅速的找到自己需要的元素 如果将key就是数组,数组的元素就是我们的value,我们需要找需要的元素的时候,就可以通过数组的索引迅速的找到对应的value,上面是一种意义的哈希表 Java——hashmap python——字典 我们定义了key,然后通过哈希函数,找到对于的内存地址,最后将key/value保存到对于的内存地址 会出现的问题

Kobe123brant的博客 1134

lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)

很多客户,特别是外包项目,需要做黑盒子,防止他人看到源码,那么这就需要对相关的源码打包加封了。diamond help 说的也是模糊模糊的,这次给出实际验证过的流程。 1.先将要加封的模块间一个工程,建好工程,写好代码之后,模块名字叫做crosslink(这个使用黑盒子的时候要用),代码如下: module crosslink( output wire[3:0] led, input wire clk, input wire reset ); reg [29:0] cnt; reg [3:0] led1;

qq_39633876的博客 1481

day05_步入百万年薪的第五天

day05 字典 字典—— dict: 字典无序的,可变的数据类型 用于存储大量数据,字典要比列表快,将数据和数据之间进行关联 lst1 = ['常鑫','李文虎','张宇'] # 姓名 lst2 = [10,80,100] # 分数 print(lst1[0],lst[0]) 逗号分隔叫做一个元素 {键 : 值,键 : 值} ——键值对 字典以散列表和哈希表存储 字典的键必须是可哈希的——不可变...

weixin_30722589的博客 110

【图像去噪】论文复现:CLIP用于图像去噪提升泛化性!CLIPDenoising的Pytorch源码复现,跑通CLIPDenoising全流程,图文结合,网络结构梳理和拆解,对应源码注释!

论文题目:Transfer CLIP for Generalizable Image Denoising —— 用于可泛化图像去噪的转移CLIP。【图像去噪】论文精读:Transfer CLIP for Generalizable Image Denoising(CLIPDenoising)CLIPDenoising理论部分详解见上面对应的论文精读,本文以源码为主,理论部分只是粗略回顾。启发:多看其他领域的文章,分析是否能应用在去噪领域,这是产生idea的要素之一;

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1412

【STK】手把手教你利用STK进行光电红外仿真04-STK/EOIR模块的实战操作1航天器星载相机对LEO卫星成像

今天引入一个实际的场景,帮助大家完成对于这个模块的理解与运用。

weixin_44184852的博客 2417

哈希表的独白

我叫哈希表(hash table),又叫散列表。我有类似字典的能力,你可以在我体内建立key与value之间的映射,实现快速的元素查询。作为小希的主人,你要明白它是怎么完成你的指令的,所以下面讲到的小希一些办事规律,还要好好听哦!哈希表如同图书馆系统,它能快速计算索书号,从而快速找到你想要的图书。分别是遍历键值对、遍历键和遍历值哦。你作为哈希表的主人,这是一些你需要掌握的。小希帮你完成任务前,都要对它自己进行。口令三:添加键值对以及删除键值对。

L23qweX的博客 923

【教程4>第4章>第20节】基于FPGA的costas环整体实现与仿真测试

Costas 环是一种用于载波同步的闭环反馈控制系统,主要应用于通信系统中的相干解调。其基本原理是通过鉴相器(Phase Detector,PD)比较接收信号与本地载波信号的相位差,将这个相位差信息经过环路滤波器(Loop Filter,LF)滤波后,去控制数控振荡器(Numerically Controlled Oscillator,NCO)的输出频率和相位,使得本地载波能够跟踪接收信号的载波,最终实现载波同步。Costas 环环路滤波器在载波同步过程中起着不可或缺的作用。

FPGA/MATLAB学习教程/源码/项目合作开发 1262

Python中字典的相关操作

1. Python类似于Java中的哈希表,只是两种语言表示的方式是不一样的,Python中的字典定义如下: 在Python中是一种可变的容器模型,它是通过一组键(key)值(value)对组成,这种结构类型通常也被称为映射,或者叫关联数组,也有叫哈希表的。每个key-value之间用 " : " 隔开,每组用","分割,整个字典用"{}"括起来(实际上就是一种映射关系) 2....

weixin_30549175的博客 73

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java 哈希表学习-散列表

基础定义 键值对:key:value 例如学号姓名: 1:张三 2:李四 3:王五 查找元素的方式不需要从头遍历到尾,直接通过键(key)来进行查找,时间复杂度低 语言的使用 Java—HashMap python----字典 哈希查找对应元素的机制 哈希碰撞 两个不同的key通过同一个哈希函数,得到相同的内存地址 解决方式:将两个键值对使用链表串起来 各种操作的时间复杂度 1 访问 X 2 搜索(无哈希碰撞) O(1) 3 搜索(有哈希碰撞) O(K) 链表遍历时经过了k个元素 4 插入 O(1) 5

Stu_art的博客 247

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python 练习 LeetCode 哈希表

Python 练习 LeetCode 哈希表

weixin_46756690的博客 556

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python 哈希_python实现哈希集合

一、什么是哈希表哈希表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。二、p...

weixin_39914732的博客 1365

《100天精通Python——基础篇 2025 第10天:字典操作全解析与哈希原理揭秘》

本文从字典的基础定义、增删改查操作,到进阶的遍历、合并技巧,逐步掌握字典的常用操作。同时,我们还会拓展讲解字典背后的哈希表原理,理解什么是可哈希(hashable)对象,字典如何通过哈希快速查找数据,帮助你打下扎实的底层基础。通过今天的学习,你不仅可以熟练使用字典,还能理解字典为何如此高效,为后续深入学习 Python 的性能优化、底层数据结构打下坚实基础。

XAMO Lab|代码、调试与复盘笔记 1269

leetcode刷题-哈希表总结(python)

首先对nums进行升序排序,一个for循环下标i遍历所有元素,left=i+1,right=len(nums)-1,如果三数之和小于0,left+,如果三数之和大于0,right+,直到left和right相遇。这个题很关键的一点就是题目中提示了如果不是快乐数按照这样的计算方式会无限循环,也就是出现过的值会再出现,从这点入手,把每次算过的和都放入集合中,每次都检查一次这个值是不是在集合中出现过。集合存储唯一且不可变的元素,也就是集合的元素必须是可哈希的,检查元素是否存在的时间复杂度为o(1)。

weixin_57139537的博客 1309

Python数据结构与算法——数据结构(链表、哈希表、树)

python实现链表、双链表、哈希表、树、二叉树、二叉搜索树、AVL树以及一些相关操作

qq_63043783的博客 2055

哈希表与哈希冲突:原理、解决方法与应用

在这篇博客中,我们将深入探讨哈希表相关的知识,这是常见集合篇的重要内容之一。哈希表在计算机科学中是一种极为关键的数据结构,它在数据存储和查找方面有着独特的优势,但同时也面临着哈希冲突这一挑战。理解哈希表的原理、哈希冲突的产生原因及解决方法对于掌握许多高级数据结构和算法的实现有着重要意义。

m0_57836225的博客 996

【python算法】python算法与数据结构[三](树 二叉搜索 链表 哈希表)

python算法 树 二叉搜索树 链表 哈希表

tianyukun0223的博客 695

哈希表的使用方法

哈希表通常是通过dict(字典)来实现的,通过键值对的方式存储数据,允许我们高效地插入、查找、删除键值对。

JQW_CSU的博客 523

蓝桥杯-Python组(py的哈希表)

问题描述小蓝正在和朋友们玩一种新的连连看游戏。在一个 n×m的矩形网格中,每个格子中都有一个整数,第 i 行第 j 列上的整数为 Ai,j​。玩家需要在这个网格中寻找一对格子(a,b)−(c,d) 使得这两个格子中的整数 Aa,b​ 和 Ac,d 相等,且它们的位置满足 ∣a−c∣=∣b−d∣>0。请问在这个 n×m 的矩形网格中有多少对这样的格子满足条件。输入格式输入的第一行包含两个正整数 n,m,用一个空格分隔。

AuRoRamth的博客 1312

数据结构5 哈希表(Hash Table)

键值对 key : value 哈希碰撞:两个不同的key通过同一个hash函数得到相同的内存地址 4通过哈希函数解析出的地址也是1,冲突了。 解决方法: 链表法, 在后面通过链表加入内存地址相同的值。 复杂度 访问: 没有这个方法 搜索:O(1), 如果有hash碰撞的情况下,就不是O(1)了,为O(K), K为碰撞元素的个数 插入: O(1) 删除: O(1) Python常用操作: 创建哈希表: # 使用数组创建hash hashTable = ['']x4 # 使用字典创建hash.

Neflibata_mo的博客 442

【力扣】20. 有效的括号 --- 哈希表 && 栈

20 有效的括号 — 哈希表 && 栈 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-parentheses 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 解题思路: 哈希表key为右括号,value为左括号,遍历字符串,若遇到左括号压入栈,遇.

qq_42281215的博客 208
上一篇: Python列表之常用内置函数、方法、技巧汇总
下一篇: Python编程:字符串相关操作
Next2you
博客等级 码龄7年 1238粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Next2you

你真帅!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值