洗礼灵魂,修炼python(8)--高效的字典

手把手复现金蝶云星空V8.1文件上传漏洞(附完整POC与修复方案) 本文深度解析金蝶云星空V8.1文件上传漏洞,提供详细的漏洞复现步骤与完整POC,涵盖技术原理、测试环境搭建及验证流程。同时给出多维防护方案,包括官方补丁部署、临时缓解措施和长期安全加固建议,帮助企业有效防范任意文件上传风险。 阅读详情

python几大核心之——字典(dict)

1.什么是字典

学生时代都用过字典吧?通过这个字的读音或者偏旁就能用字典查到其相关信息,词性,意思,组词,造句,还有在什么场合下用这个字等等的。

在python中的这个字典,其实原理是一样的,当然,python里的这个字典肯定不是用来查字的,是用来查我们需要的数据的,不过,如果你真要用python字典来查哪个字也是可以的,通过python的网络爬虫来查字就行,而且不止查字,可以查很多东西。

字典的特征号是花括号{}

2.字典的作用:

用来关联数组,或者叫归类数据

3.创建字典的多种方式:

a:直接赋值创建

 此处可以看出字典和前面列表,元组,集合都不同的,[‘x‘]是key,中文名叫键,用[:]连接,[1]是value,中文名叫值,这三者合在一起作为字典的一个元素。一般称呼字典内一个元素为键值对

b:通过工厂函数dict和关键字参数创建(什么是关键字参数后面的章节会提到)

c:通过二元组列表创建

d:dict和zip结合创建

zip函数,可以将两个对象结合在一起:

 

注意python2和python3中zip函数的区别,上面两张图已经给出

 

e:通过dict.fromkeys()创建

注意fromkeys()方法的用法,自行体会

 

3.字典的方法

python2:

python3:

 因为前后两者差别确实挺大的,结合实际,我就折中抽取都常用的几个:

clear,copy,fromkeys,get,items,keys,pop,popitem,update,setdefault,values

clear:清楚所有,和前一章集合的clear方法几乎一样,不再解析

copy:拷贝,和前一章集合的copy方法几乎一样,也不再解析

fromkeys:生成一个字典对象,上面创建字典时已经讲解

get:根据给的键返回值

 

注意:get方法,第一个参数是字典的键,第二个参数可有可无。如果访问的字典的键不存在,默认不返回任何东西,如果加入了第二个参数,键不存在则返回给定的第二个参数,但是必须符合python的语法规则

items:以列表的形式返回字典的所有键值对

keys:以列表的形式返回字典的所有键,和items原理相同不再展示

values:以列表的形式返回字典的所有值,和items原理相同不再展示

pop:给定键,删除对应的键值对并返回

popitem:按照字典优先级的排序(或者叫随机)进行删除并返回

update:和集合的update方法几乎一样,用另一个字典更新该字典

 

setdefault:添加元素,并可以设置一个默认值

 

但是如果在设定key时,其key已经存在字典的话,则会不变:

 4.字典可以像列表使用索引一样访问+修改,但是字典使用的键,而非索引,字典没有索引

 

5.字典是可变对象,支持原处修改,也就是ID不变,相信也应该不用演示了

6.字典可以做变量解包:

但是元素个数必须对应,不然报错。

 

注意:字典的键必须是可哈希的值。

什么是可哈希,这里又得提到一个内置函数——hash()

【可哈希】你可以理解为可被作为依据查找,并且具有唯一对应的含义,因为字典里的键不可能对应多个值,反之一个值不能对应多个键的。而哈希函数就是判断此对象或者说此元素是否可哈希,如果不可哈希则会报错,上面的列表就是不可哈希,因为列表是可以原处修改的对象,比如,你今天介绍给一个人,后面你再去找他还钱,你发现他居然会易容术,你之前记住的他的样子已经不能帮助你找到他了,所以你的钱就找不回来了(比喻有些逻辑漏洞,理解原理就行。)。根据这个比喻,你应该知道能原处修改的对象作为键的话不可能有唯一对应的值了吧?所以列表是不能作为键,也就不可哈希,上面的报错就很好理解了。

 

而字典本身是不可哈希的,字典的键才是可哈希的。因为字典也支持原处修改

 

你应该要问,为什么字典的键必须得可哈希呢?
个人理解:开头提到的学生时代所用的字典,你在查一个字的时候,是需要得到它的读音或者偏旁部首,再按照字典前页的拼音表或者部首表来查跟着查,就能查到其字在哪,而这里的键就好比你知道的读音或者偏旁,用其来作为依据就会很快在字典的键里搜索这个键,然后立马返回这个键对应的值,而在大数据处理时,一般都是用字典再加上哈希算法来存储数据的,因为哈希算法可以高效快速的查找键所在位置,字典得到这个键再把对应的值反馈出来就行。它不像列表,元组那样,因为列表和元组是有序的,列表和元组默认的查找方式是从索引值为0开始查,换句话就是从头到尾开始查,当数据很大时,这样处理起来的速度是很慢的,用字典直接秒杀列表。

 说个实际的例子,像百度等搜索引擎,其实就是用爬虫程序每天在不断爬网页,并结合一些叫清风算法之类的算法(做SEO的对这些应该很了解)存储关键字通过放在字典里并存在服务器里,然后当用户用关键词搜索内容时,百度搜索引擎就会很快有反应,把事先存放在字典里包含这个关键词所有相关的信息立马反馈给用户,这一两句话的过程,真正的实现其实大概就一眨眼的功夫(是不是有种感觉我在写小说 /手动滑稽),原理是这样的,其实搜索引擎当然不止像我说的这么简单,还有很多复杂的算法来结合实现,不然不可能达到这么快的速度的。好,不多说了。总之,你知道字典很强大就行了。

最新Win10离线安装.NET Framework 3.5的方法(附离线包2022/3/22) win10 .net framework 3.5离线安装 阅读详情

相关推荐

【机器学习】图神经网络(NRI)模型原理和运动轨迹预测代码实现

NRI模型利用VAE和GNN从观测数据中学习系统动态和交互图,展现出在无监督学习、图结构建模、多步预测和连续松弛方面的强大能力。未来工作可探索动态图结构学习、应用于更复杂系统、提高模型泛化能力和计算效率,以及与其他模型的结合。NRI作为新兴的图神经网络方法,在理解和预测相互作用系统方面潜力巨大,有望在各领域发挥重要作用。

MUKAMO的博客 2777

12个高效Python小技巧,建议收藏!

12个高效Python小技巧,建议收藏!

python03011的博客 453

运放专题:运算放大电路中的相位补偿

的方法

五花带点肉 2万+

2024年最新Python:关于高效使用字典的清单_python 批量调用字典(2),2024年最新Python高级面试题

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~给大家准备的学习资料包括但不限于:Python 环境、pycharm编辑器/永久激活/翻译插件python 零基础视频教程Python 界面开发实战教程Python 爬虫实战教程Python 数据分析实战教程python 游戏开发实战教程Python 电子书100本。

2401_84140442的博客 748

python基础之语言发展历史

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。 目录一、前言二、发展历史1、Python是一种面向对象的解释型编程语言2、Python常被称为胶水语言3、Python由Guido开发4、Python连续多年入选编程语言TOP105、Python的发展历史三、总结 一、前言   由于Python语言的简洁性、易读性以及可扩展性,它在网络爬虫、数据分析、.

jiankang66的博客 3348

【Unity 反向运动学插件】Final IK 一套完整的IK解决方案

Final IK是Unity中一套完整的反向运动学解决方案,提供多种IK算法(CCD、FABRIK等)和功能模块,包括全身IK、VR驱动、武器瞄准、视线跟随等。其核心是通过数学方法计算关节旋转,使末端骨骼精确到达目标位置。系统支持多约束求解、旋转限制、动画烘焙及交互系统,采用模块化设计,兼顾性能与扩展性,适用于动作游戏、VR等需要高质量角色控制的场景,是Unity生态中最成熟的IK工具链之一。

2403_88403568的博客 1002

python:实现快速更新字典

python修改字典里面的value

ningqingzy的博客 4264

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

weixin_42412049的博客 2297

高效使用Python字典,技巧都在这里!

字典(dict)对象是 Python 最常用的数据结构 社区曾有人开玩笑地说:“Python企图用字典装载整个世界” 字典在Python中的重要性不言而喻,这里整理了几个关于高效使用字典的清单,希望Python开发者可以在日常应用开发中合理利用,让代码更加 Pythonic。 1、用 in 关键字检查 key 是否存在 Python之禅中有一条开发哲学是: There should be one...

Python追梦 1386

WblockCloneObjects克隆一个图纸内的实体包括块参照,同名块参照的处理

public static void HeBingTu2(double lieJu, List<string> filePaths) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (DocumentLock docLock = doc.Lock...

1108

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5779

Python机器学习:从零基础到项目实战

当您翻开此书,您正踏入一场数据与智慧的修行。机器学习,并非冰冷的符码,而是机器模拟人类洞察世界的法门。本书将带您,以Python为舟,泛游于算法之海。我们不只传授“术”,更探求其后的“道”——从数据的生灭流转中观照规律,于模型的迭代演进里体悟得失。愿您合上书卷时,收获的不仅是驾驭数据的技能,更有一双洞悉复杂、化繁为简的“智慧之眼”。现在,让我们一同启程。

YunWisdom 966

【DeepSeek-R1 】分词系统架构解析

DeepSeek-R1 分词系统解析 DeepSeek-R1 采用 SentencePiece Unigram 算法,通过统计语言模型实现高效子词分词。其核心优势包括: 算法对比:相比 BPE/WordPiece,Unigram 基于概率模型,支持多语言,自动回退字符级处理。 特性优化:智能空格处理、数字分桶、多语言统一支持,并采用前缀树索引和 SIMD 并行加速,编码速度达 12,458 tok/s。

赶紧的博客 429

Python:关于高效使用字典的清单

题图:Constantin Popescu on Unsplash字典(dict)对象是 Python 最常用的数据结构,社区曾有人开玩笑地说:”Python 企图用字典...

Python之禅的专栏 378

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何高效使用Python字典的方法详解

众所周知字典(dict)对象是 Python 最常用的数据结构,社区曾有人开玩笑地说:"Python企图用字典装载整个世界",字典在Python中的重要性不言而喻,这里整理了几个关于高效使用字典的清单,希望Python开发者可以在日常应用开发中合理利用,让代码更加 Pythonic。 1、用 in 关键字检查 key 是否存在 Python之禅中有一条开发哲学是: There should be one-- and preferably only one --obvious way to do i

小壁虎的春天 285

精雕软件(JDpaint) 5.5 绿色版

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

Python字典(3分钟极速掌握)

字典结构在Python中的地位也是举足轻重,如果非要给他个排名的话,list居第一,字典就是第二了。一点也不夸张,以后在开发中用到字典结构的地方简直数不胜数。 什么是字典?字典就是一长串key:value相对应的一个集合,就好比是一个班级,班里面每个人都对应了一个名字一样。这样的一个集合我们说它是字典结构。 下面我们先看一下怎么创建一个字典: ji={} print(type(ji)) ...

farley的成长之路 317

Statistics and Machine Learning Toolbox

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

5.Python高效编程(如何让字典保持有序)

运行结果:模拟程序:运行结果:

小熙_strive的博客 1247

Python里的dict和set的效率有多高?

dict和set的背后 为什么它们是无序的? 为什么并不是所有的Python对象都可以当作dict的键或set里的元素? 为什么dict的键和set的元素的顺序是根据它们被添加的次序而定的,以及为什么在映射对象的生命周期中,这个顺序并不是一成不变的? 为什么不应该在迭代循环dict或是set的同时往里添加元素? Python里的dict和set的效率有多高? 由实验得知,不管查询有多少个元素的字典或集合,所耗费的时间都能忽略不计(前提是字典或者集合不超过内存大小). 字典中的散列表 散列

python学习者的博客 1492

python 智能造句,用生成器从给定单词造句

我试图写一个代码,可以创建几个句子和用户要求的单词,但我遇到了一些问题,无法从万能的谷歌找到答案。寻求任何建议(同时,我认为有一种方法可以缩短它)。在class CallCentre(object):"""This is a class."""def __init__(self):self.nouns = ['koer', 'porgand', 'madis', 'kurk', 'tomat']s...

weixin_35930255的博客 2105

python划分语句块_跟老齐学Python之正规地说一句话

小孩子刚刚开始学说话的时候,常常是一个字一个字地开始学,比如学说“饺子”,对他/她来讲,似乎有点难度,大人也聪明,于是就简化了,用“饺饺”来代替,其实就是让孩子学会一个字就能表达。当然,从教育学的角度,有人不赞成这种方法。这个此处不讨论了。如果对比学习编程,就好像是前面已经学习过的那些各种类型的数据(对应这自然语言中的单个字、词),要表达一个完整的意思,或者让计算机完成一个事情(动作),不得不通过...

weixin_39886238的博客 183

洗礼灵魂,修炼python(50)--爬虫篇—基础认识

爬虫 1.什么是爬虫 爬虫就是昆虫一类的其中一个爬行物种,擅长爬行。 哈哈,开玩笑,在编程里,爬虫其实全名叫网络爬虫,网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者。是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫(这一点倒是和我上面说的虫很形象)。 这个解释有点官方了,说直白...

dingyu6453的博客 143

Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧

字典(dict)对象是 Python 最常用的数据结构之一。 社区曾有人开玩笑地说:「Python 企图用字典装载整个世界。」 可见其有多重要,不用多说,我平时用的也很多,索性总结一下,把一些常用的方法写下来,分享给大家。 一、字典创建 # 1、创建空字典 a = {} b = dict() # 2、有初始值,从输入的便利程度来说,我更喜欢第二种 a = {'a': 1, 'b': 2, 'c': 3} b = dict(a=1, b=2, c=3) # 3、key 来自一个列表,而 value 相同,

AlwaysBeta 的专栏 294

Python中如何高效的创建字典

常见的几种创建字典的方式:(一)直接赋值创建:dic1={'a':1,'b':2,'c':3,'d':4,'e':5} print(dic1) (三)通过关键字dict和关键字参数创建dic = dict(a = 1, b = 2, c =3)(四)通过二元组列表创建list = [('a', 1), ('b', 2), ('c', 3)]但是,我感觉在编程过程中最常用的方法是:dict和zi

mmayanshuo的博客 9327

洗礼灵魂,修炼python(23)--自定义函数(4)—闭包进阶问题—>报错UnboundLocalError: local variable 'x' referenced before assign

闭包(lexical closure)什么是闭包前面已经说过了,但是由于遗留问题,所以单独作为一个章节详解讲解下不多说,看例子:def funx(x): def funy(y): return x*y #此时的funy函数对外层funx函数的变量调用,则称为闭包 return funy 结果:&gt;&gt;&gt; i=funx(4) &gt;&gt;&g...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 2721

洗礼灵魂,修炼python(10)--有趣的判断分支+从实例中掌握循环语句

所有的编程语言里都有判断语句和循环语句。判断语句则是用来分支程序流程的循环语句则是为了实现一个效果,让程序的规律性的重复操作不用说,分支和循环自然在python里也是有的一,条件判断:if,if……else1.在python里if可以单独出现,也可以和else配套出现,但是else不能单独出现这里则要提到一个在编程里一个共有的特性:悬挂else:即出现多余或者不和if匹配的else,就叫悬挂els...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 794

洗礼灵魂,修炼python(14)--模块decimal, fractions,operator,collections以及精度介绍

decimal1.作用:用于浮点数计算。相比内置的二进制浮点数实现 float这个类型有助于 金融应用和其它需要精确十进制表达的场合,控制精度,控制舍入以适应法律或者规定要求,确保十进制数位精度,或者用户希望计算结果与手算相符的场合。Decimal 重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。 高精度使 Decimal 可以执行二进制浮点数无法进行的模运算和等值测试2.函数...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 644
上一篇: 洗礼灵魂,修炼python(7)--元组,集合,不可变集合
下一篇: 洗礼灵魂,修炼python(9)--灵性的字符串
geekbyte.
博客等级 码龄11年 308粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值