百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

python中的字典是什么?

liuian 2024-11-28 00:43 21 浏览

“一起学习,一起成长!”

字典(dictionary)与列表类似,但其中元素的顺序无关紧要,因为它们不是通过像0或1的偏移量访问的。取而代之,每个元素拥有与之对应的互不相同的键(key),通过键来访问。键通常是字符串,但它还可以是Python中其他任意的不可变类型:布尔型、整型、浮点型、元组、字符串,以及其他一些在后面的内容会见到的类型。字典是可变的,因此你可以增加、删除或修改其中的键值对。

1. 使用{}创建字典

>>> empty_dict={}

>>> empty_dict

{}

>>> bierce={"day":"mostly misspent","positive":"one's voice","misfortune":"never misses"}

>>> bierce

{'day': 'mostly misspent', 'positive': "one's voice", 'misfortune': 'never misses'}

2. 使用dict()转换为字典

可以用dict()将包含双值子序列的序列转换成字典。

每个子序列的第一个元素作为键,第二个元素作为值。

>>> lol=[['a','b'],['c','d'],['e','f']]

>>> dict(lol)

{'a': 'b', 'c': 'd', 'e': 'f'}

可以对任何包含双值子序列的序列使用dict():

包含双值元组的列表:

>>> lot=[('a','b'),('b','d'),('e','f')]

>>> lot

[('a', 'b'), ('b', 'd'), ('e', 'f')]

>>> dict(lot)

{'a': 'b', 'b': 'd', 'e': 'f'}

包含双值列表的元组:

>>> tol=(['a','b'],['c','d'],['e','f'])

>>> dict(tol)

{'a': 'b', 'c': 'd', 'e': 'f'}

双字符的字符串组成的列表:

>>> los=['ab','cd','ef']

>>> dict(los)

{'a': 'b', 'c': 'd', 'e': 'f'}

双字符的字符串组成的元组:

>>> tos=('ab','cd','ef')

>>> dict(tos)

{'a': 'b', 'c': 'd', 'e': 'f'}

3. 使用[key]添加或修改元素

>>> python={}

>>> python={'a':'b','c':'d','e':'f','g':'h'}

>>> python

{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h'}

添加新键值对:

>>> python['new1']='new2'

>>> python

{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'new1': 'new2'}

使用键修改值:

>>> python['new1']='new2-1'

>>> python

{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'new1': 'new2-1'}

字典的键必须保证互不相同。如果创建字典时同一个键出现了两次,那么后面出现的值会取代之前的值:

>>> pythoon={'a':'b','a':'c','c':'d'}

>>> pythoon

{'a': 'c', 'c': 'd'}

4. 使用update()合并字典

使用update()可以将一个字典的键值对复制到另一个字典中去。

>>> python={'a':'b','c':'d','e':'f'}

>>> others={'age':26,'pay':'1236'}

>>> python.update(others)

>>> python

{'a': 'b', 'c': 'd', 'e': 'f', 'age': 26, 'pay': '1236'}

如果待添加的字典与待扩充的字典包含同样的键会怎么样?新归入字典的值会取代原有的值:

>>> python2={'age':89}

>>> python.update(python2)

>>> python

{'a': 'b', 'c': 'd', 'e': 'f', 'age': 89, 'pay': '1236'}

5. 使用del删除具有指定键的元素

>>> del python['age']

>>> python

{'a': 'b', 'c': 'd', 'e': 'f', 'pay': '1236'}

>>> del python['a']

>>> python

{'c': 'd', 'e': 'f', 'pay': '1236'}

6. 使用clear()删除所有元素

使用clear(),或者给字典变量重新赋值一个空字典({})可以将字典中所有元素删除:

>>> python.clear()

>>> python

{}

>>> python={}

>>> python

7. 使用in判断是否存在

如果希望判断某一个键是否存在于一个字典中,可以使用in。

>>> python={'a':'b','c':'d','e':'f'}

>>> 'a' in python

True

>>> 'f' in python

False

8. 使用[key]获取元素

这是对字典最常进行的操作,只需指定字典名和键即可获得对应的值:

>>> python['a']

'b'

如果字典中不包含指定的键,会产生一个异常:

>>> python['f']

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 'f'

有两种方法可以避免这种情况的发生。第一种是在访问前通过in测试键是否存在:

>>> 'f' in python

False

另一种方法是使用字典函数get():

>>> python.get('a')

'b'

反之,若键不存在,如果指定了可选值,那么get()函数将返回这个可选值:

>>> python.get('f','not in python')

'not in python'

否则,会得到None(在交互式解释器中什么也不会显示):

>>> python.get('f',None)

>>>

9. 使用keys()获取所有键

使用keys()可以获得字典中的所有键。

>>> python.keys()

dict_keys(['a', 'c', 'e'])

但在python3中,你只能自己调用list()将dict_keys转换为列表类型。

>>> list(python.keys())

['a', 'c', 'e']

在python3里,同样需要手动使用list()将values()和items()返回值转换为普通的python列表。

10. 使用values获取所有值

使用values()可以获取字典中的所有值:

>>> list(python.values())

['b', 'd', 'f']

11. 使用items()获取所有键值对

使用items()函数可以获取字典中所有的键值对:

>>> list(python.items())

[('a', 'b'), ('c', 'd'), ('e', 'f')]

12.诚邀扫描下方二维码关注公众号,一起学习,一起成长! 使用=赋值,使用copy()复制

与列表一样,对字典内容进行的修改会反映到所有与之相关联的变量名上:

>>> python={'a':'b','c':'d','e':'f'}

>>> python_new=python

>>> python_new

{'a': 'b', 'c': 'd', 'e': 'f'}

>>> python['a']='g'

>>> python

{'a': 'g', 'c': 'd', 'e': 'f'}

若想避免这种情况,可以使用copy()将字典复制到一个新的字典中:

>>> python_new1=python.copy()

>>> python_new1

{'a': 'g', 'c': 'd', 'e': 'f'}

>>> python_new1['a']='u'

>>> python_new1

{'a': 'u', 'c': 'd', 'e': 'f'}

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「诚邀关注公众号“issnail”,会有惊喜哦!感谢!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

参考书目:python语言及其应用

相关推荐

MySQL合集-mysql5.7及mysql8的一些特性

1、Json支持及虚拟列1.1jsonJson在5.7.8原生支持,在8.0引入了json字段的部分更新(jsonpartialupdate)以及两个聚合函数,JSON_OBJECTAGG,JS...

MySQL 双表架构在房产中介房源管理中的深度实践

MySQL房源与价格双表封神:降价提醒实时推送客户房产中介实战:MySQL空间函数精准定位学区房MySQL狠招:JSON字段实现房源标签自由组合筛选房源信息与价格变更联动:MySQL黄金搭档解决客户看...

MySQL 5.7 JSON 数据类型使用总结

从MySQL5.7.8开始,MySQL支持原生的JSON数据类型。MySQL支持RFC7159定义的全部json数据类型,具体的包含四种基本类型(strings,numbers,boolea...

MySQL 8.0 SQL优化黑科技,面试官都不一定知道!

前言提到SQL优化,大多数人想到的还是那些经典套路:建索引、避免全表扫描、优化JOIN顺序…这些确实是基础,但如果你还停留在MySQL5.7时代的优化思维,那就out了。MySQL8.0已经发布好...

如何在 MySQL 中使用 JSON 数据(mysql的json函数与实例)

在MySQL中学习“NoSQL”MySQL从5.7版本开始就支持JSON格式的数据类型,该数据类型支持JSON文档的自动验证和优化存储和访问。尽管JSON数据最好存储在MongoDB等...

MySQL中JSON的存储原理(mysql中json字段操作)

前言:表中有json字段后,非索引查询性能变得非常糟糕起因是我有一张表,里面有json字段后,而当mysql表中有200w数据的时候,走非索引查询性能变得非常糟糕需要3到5s。因此对mysql的jso...

mysql 之json字段详解(多层复杂检索)

MySQL5.7.8开始支持JSON数据类型。MySQL8.0版本中增加了对JSON类型的索引支持。示例表CREATETABLE`users`(`id`intNOTNULLAU...

VMware vCenter Server 8.0U3b 发布下载,新增功能概览

VMwarevCenterServer8.0U3b发布下载,新增功能概览ServerManagementSoftware|vCenter请访问原文链接:https://sysin.or...

Spring Boot 3.x 新特性详解:从基础到高级实战

1.SpringBoot3.x简介与核心特性1.1SpringBoot3.x新特性概览SpringBoot3.x是建立在SpringFramework6.0基础上的重大版...

如何设计Agent的记忆系统(agent记忆方法)

最近看了一张画Agent记忆分类的图我觉得分类分的还可以,但是太浅了,于是就着它的逻辑,仔细得写了一下在不同的记忆层,该如何设计和选型先从流程,作用,实力和持续时间的这4个维度来解释一下这几种记忆:1...

Spring Boot整合MyBatis全面指南:从基础到高级应用(全网最全)

一、基础概念与配置1.1SpringBoot与MyBatis简介技术描述优点SpringBoot简化Spring应用开发的框架,提供自动配置、快速启动等特性快速开发、内嵌服务器、自动配置、无需X...

5大主流方案对比:MySQL千亿级数据线上平滑扩容实战

一、扩容方案剖析1、扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据...

PostgreSQL 技术内幕(五)Greenplum-Interconnect模块

Greenplum是在开源PostgreSQL的基础上,采用MPP架构的关系型分布式数据库。Greenplum被业界认为是最快最具性价比的数据库,具有强大的大规模数据分析任务处理能力。Greenplu...

在实际操作过程中如何避免出现SQL注入漏洞

一前言本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因。并以几个常见漏洞存在形式,提醒技术同学注意相关问题。最后会根据原理,提供解决或缓解方案。二SQL注入漏洞的原理、形...

运维从头到尾安装日志服务器,看这一篇就够了

一、rsyslog部署1.1)rsyslog介绍Linux的日志记录了用户在系统上一切操作,看日志去分析系统的状态是运维人员必须掌握的基本功。rsyslog日志服务器的优势:1、日志统一,集中式管理...