Python:dict

关于boost::python::dict的测试程序 而boost::python::dict就是用来处理这些类型转换问题的一个重要工具类。总之,boost::python::dict是一个十分便捷和强大的工具类,它为我们在Python和C++之间进行类型转换提供了非常好的支持。从输出结果可以看出,boost::python::dict确实成功地实现了Python的dict类型和C++中map类似的操作功能。下面我们来通过一个简单的测试程序来了解boost::python::dict的用法和特性。关于boost::python::dict的测试程序。 阅读详情

查找速度快,也擅长增删,就是消耗的空间比较大。

属于无序集合。

新建:

其实就是键值对集合,Java中也有类似。

我们已经知道,list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字:

['Adam', 'Lisa', 'Bart']

或者考试的成绩列表:

[95, 85, 59]

但是,要根据名字找到对应的成绩,用两个 list 表示就不方便。

如果把名字和分数关联起来,组成类似的查找表:

'Adam' ==> 95
'Lisa' ==> 85
'Bart' ==> 59

给定一个名字,就可以直接查到分数。

Python的 dict 就是专门干这件事的。用 dict 表示“名字”-“成绩”的查找表如下:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

我们把名字称为key,对应的成绩称为value,dict就是通过 key来查找 value。

花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

由于dict也是集合,len() 函数可以计算任意集合的大小:

>>> len(d)
3

注意: 一个 key-value 算一个,因此,dict大小为3。

查询:

可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:

>>> print d['Adam']
95
>>> print d['Paul']
Traceback (most recent call last):
  File "index.py", line 11, in <module>
    print d['Paul']
KeyError: 'Paul'

注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。

要避免 KeyError 发生,有两个办法:

一是先判断一下 key 是否存在,用 in 操作符:

if 'Paul' in d:
    print d['Paul']

如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

>>> print d.get('Bart')
59
>>> print d.get('Paul')
None

特点

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

由于dict是按 key 查找,所以,在一个dict中,key不能重复。

dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

当我们试图打印这个dict时:

>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}

打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。

dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

可以试试用list作为key时会报什么样的错误。

不可变这个限制仅作用于key,value是否可变无所谓:

{
    '123': [1, 2, 3],  # key 是 str,value是list
    123: '123',  # key 是 int,value 是 str
    ('a', 'b'): True  # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
}

最常用的key还是字符串,因为用起来最方便。

更新

Python更新dict

dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value。比如已有dict:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

要把新同学'Paul'的成绩 72 加进去,用赋值语句:

>>> d['Paul'] = 72

再看看dict的内容:

>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}

如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value:

>>> d['Bart'] = 60
>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 60}

遍历

由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。

直接使用for循环可以遍历 dict 的 key:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
...     print key
... 
Lisa
Adam
Bart

由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。

删除

缺失中。。

 

 

 

 

 

 

 

 

 

 

 

 

 

boost::python::dict相关的测试程序编程 其中,boost::python::dict是Boost.Python库中的一个类,它允许我们在C++代码中创建和操作Python的字典对象。通过使用Boost.Python库,我们可以方便地在C++代码中创建和操作Python的字典对象,实现C++和Python之间的无缝集成。在本例中,我们将"name"和"city"的值转换为std::string类型,将"age"的值转换为int类型。在上述代码中,我们首先包含了Boost.Python的头文件,并定义了一个命名空间python来简化代码。 阅读详情

相关推荐

【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。 承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。 一、偶极子点阵 手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,...

XD_Yangf的博客 7552

Python 字典你真的了解吗

然后,代码检查名称空间类型是否是字典类型,如果是,则使用 PyDict_SetItem() 函数将名称和值存储在字典中,否则,使用 PyObject_SetItem() 函数将名称和值存储在一般的映射对象中。主要是计算_hash_值,先检查键是否为PyUnicode对象,如果是,则使用unicode_get_hash()函数计算其哈希值。可以看到,调用了tp_as_mapping 的方法集,并调用了该方法集的 mp_ass_subscript 方法,通过源码可以知道,最终执行的函数为。

程序员小麦的博客 788

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4935

12. 字典dict类型详解

python3字典dict类型详解

十三阿哥的博客 4396

DSP28335 ADC模块实战:从寄存器配置到精准数据采集(附代码详解)

本文详细解析DSP28335的ADC模块配置与数据采集实战,涵盖寄存器设置、采样窗口优化、中断处理及代码实现。重点解决ADC精度问题,如采样窗口不足导致数据偏差,提供完整代码示例和调试技巧,助力工程师实现精准数据采集。

kkk56的博客 867

(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破

该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。

LJ1147517021的博客 1380

Python基础(三):Dict类型

Dict类型: Dict类型的定义: Dict是一种无序的,可变的数据集合类型。一个dict对象包括数组不固定的键值对,键值对的键具有唯一性,不能重复;值可以存储任意类型的对象。 Dict类型使用一对花括号“{}”创建,键值对之间使用逗号“,”做分隔,键值之间使用冒号“:”做分隔。 d = {"name":"Tom","age":12,"sex":"男"} print d Dict类型...

qq_38320866的博客 4069

zabbix系列:内存VM.MEMORY.SIZE监控之total、free、pused、available 参数说明

free -m buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的. zabbix Web total:1046/1024=1.02G Available:216/1046=20.65% zabbix参数 total- 总物理内存. free- 可用内存. active- 内存当前使用或最近使用,所以它在RAM中。 inactive- 未使用内存. wired- 被标记为始终驻留在RAM中的内...

NIO4444 5670

pydantic学习与使用-12.使用 Field 定制字段

前言 Field 可用于提供有关字段和验证的额外信息,如设置必填项和可选,设置最大值和最小值,字符串长度等限制 Field模块 关于 Field 字段参数说明 Field(None) 是可选字段,不传的时候值默认为None Field(…) 是设置必填项字段 title 自定义标题,如果没有默认就是字段属性的值 description 定义字段描述内容 from pydantic import BaseModel, Field class Item(BaseModel): name: str

qq_27371025的博客 8720

深入理解鸿蒙输入子系统驱动:HDI接口、HAL层与内核驱动的协同机制

/ 扫描输入设备// 打开指定输入设备// 关闭指定输入设备// 获取指定设备信息// 获取所有设备列表鸿蒙输入子系统驱动采用分层架构设计,通过HDI接口层实现硬件抽象,HAL层提供统一的事件处理机制,用户空间驱动层负责设备管理和事件分发。整个系统支持多种输入设备类型,包括触摸屏、按键、鼠标、键盘等,并提供了完整的HID设备支持。分层架构:清晰的层次划分,便于维护和扩展事件驱动:基于epoll的高效事件处理机制设备管理:完善的设备生命周期管理HID支持。

m0_67505153的博客 214

matlab电子科技大学数学实验期末模拟35道(1)

【代码】matlab电子科技大学数学实验期末模拟35道。

c_wrj_的博客 2044

Python中的Dict类型

文章内容来源:http://www.imooc.com/learn/177 Python之什么是dict 我们已经知道,list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字: ['Adam', 'Lisa', 'Bart'] 或者考试的成绩列表: [95, 85, 59] 但是,要根据名字找到对应的成绩,用两个 list 表示就不方便。

qq_20867981的博客 1387

西门子S7-1200PLC控制步进电机的组态编程和具体步骤

西门子S7-1200PLC控制步进电机的组态编程和具体步骤 硬件准备: 1) 一个S7-1214C DC/DC/DC,订货号:6ES7 214-1AG40-0XB0 2) 一个86系的步进电机+相应的驱动器 3) 一个20A的西门子24V电源(步进驱动器及plc电源) 4) Portal V15版本 组态及编程: 1) 创建一个验证项目,添加cpu( S7-1214C),双击“工艺对象”,选择“运动控制”的TO_PositioningAxis V6.0版本,如下图所示: 2) “确定”后,系统自动生成名

Robot_PLC_HMI_Automation 1万+

Python3: dict的交集与差集

代码】Pythondict的交集与差集。

风静如云的博客 1312

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

dict是python语言的内置对象_Python内置了字典:dict的支持

一、dict函数如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95把数据放入dict的方法,除了初始化时指定外,还可以通过key放入...

weixin_39865625的博客 186

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Python基础 : 字典(Dict)

字典是一种可变的数据结构,用于存储键值对(key - value)。键和值用连接,不同键值对用分隔。键必须是不可变类型(数字、字符串、元组)。值可以是任意类型,甚至是另一个字典。字典的无序性Python 3.6及之前, 字典是无序的,遍历顺序与插入顺序无关,由哈希值决定Python 3.7+, 正式规定字典按插入顺序输出有序性仅指保留插入顺序,与键值排序无关。若需排序,仍需使用sorted()。键值对存储。

an_yu_xin的博客 4334

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python4:字典dict

字典dict基本概念 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 .键必须是唯一的,但值则不必。 字典是一个无序集合,序列由于没有key来做对应,所以以顺序来对应值。序列有顺序,字典没有! 字典 dic = {"Alice":6,"Jan":34} print(dic,type(dic)) #key-value是键值对 dic1 = [{'name':'Alic

weixin_48258770的博客 374

Python Notes:Dict introduce

struct _dictkeysobject { Py_ssize_t dk_refcnt; //引用计数 /* Size of the hash table (dk_indices). It must be a power of 2. */ Py_ssize_t dk_size; /* Function to lookup in the hash ta...

sssssssssszz的博客 272

python list tuple dict set区别_python学习笔记-数据集合: list,tuple,dict,set

Python的数据集合有四种,即list,tuple,dict,set列表,ListList是Python中一种有序的可变的数据集合。它的元素可以被添加或则删除。List的表示方法是用一个[]将元素包含起来,元素间用,号分隔。例如[2,'hah',True]。创建Listlist = [1,2,3,'apple',true]List中的元素的数据类型可以不同,除了整数、浮点数、布尔值、字符串等,也...

weixin_39715513的博客 185

python内置字典:dict

dict dict使用键-值(key-value)存储,具有很快的查找速度。 d = {'Danny':95,'Joy':75,'Bob':85} 输入d['Danny']可得到95. dict通过给定的名字,在内部找出对应的存放成绩的内存地址,直接取出来,因此速度非常快。 将数据放入dict的方法,除了上述中初始化时指定外,还可以通过key放入: d['Adam']=67 一...

一青里的博客 355

Python3错误 TypeError: ‘dict_keys‘ object is not subscriptable

问题:python编码中使用 dict.keys() 时,会报 TypeError: 'dict_keys' object is not subscriptable 的错误 解决:在Python3中需要使用 list,如图 原因:dict_keys(['no surfacing','flippers']),返回的是一个 dict_keys 对象,不再是 list 类型...

Le___Le的博客 3万+

python字典:dict的方法的使用以及代码举例

字典可以通过将以逗号分隔的 键: 值 对列表包含于花括号之内来创建,例如: {‘jack’: 4098, ‘sjoerd’: 4127} 或 {4098: ‘jack’, 4127: ‘sjoerd’},也可以通过 dict 构造器来创建。 class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterable, **kwarg)...

二胖_pro 725

python入门系列(15): python字典dict合并

1、方法一#!/usr/bin/pythondict = {'Name': 'Zara', 'Age': 7} dict2 = {'Sex': 'female' }dict_new=dict.update(dict2) 只能使用dict.update()2、方法二dictMerged2 = dict( dict1, **dict2 )参考: 1. Python 字典(Dictionary) upd

rosefun96的博客 731

Python:dict

看看和从变为list[1][1]

z3w97的博客 456

Python:利用dict继承编写自定义Dict类

最近在学习python中,对利用dict继承编写自定义Dict类方面产生一些问题。问题源于廖雪峰老师博客中的一个问题:编写一个Dict类,要求类的行为和dict一致,但是可以通过属性来访问。文章将通过探究思路和代码分析解决这个问题。个人理解如有错误还请不吝赐教。

m0_73771268的博客 3462

【Python 报错已解决】TypeError: ‘dict‘ object is not callable

在 Python 编程中,报错信息常常让开发者陷入困惑。当遇到“TypeError: 'dict' object is not callable”这个报错时,我们需要深入理解其产生的原因并找到有效的解决方法。本文将围绕这个报错展开讨论,帮助大家快速解决问题。

鸽芷咕的博客 1395
上一篇: 算法与数据结构-第六章:树
下一篇: Python:set
include_ice
博客等级 码龄9年 307粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值