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

python中的字典是什么?

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

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

字典(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语言及其应用

相关推荐

python入门到脱坑函数—定义函数_如何定义函数python

Python函数定义:从入门到精通一、函数的基本概念函数是组织好的、可重复使用的代码块,用于执行特定任务。在Python中,函数可以提高代码的模块性和重复利用率。二、定义函数的基本语法def函数名(...

javascript函数的call、apply和bind的原理及作用详解

javascript函数的call、apply和bind本质是用来实现继承的,专业点说法就是改变函数体内部this的指向,当一个对象没有某个功能时,就可以用这3个来从有相关功能的对象里借用过来...

JS中 call()、apply()、bind() 的用法

其实是一个很简单的东西,认真看十分钟就从一脸懵B到完全理解!先看明白下面:例1obj.objAge;//17obj.myFun()//小张年龄undefined例2shows(...

Pandas每日函数学习之apply函数_apply函数python

apply函数是Pandas中的一个非常强大的工具,它允许你对DataFrame或Series中的数据应用一个函数,可以是自定义的函数,也可以是内置的函数。apply可以作用于DataF...

Win10搜索不习惯 换个设定就好了_window10搜索用不了怎么办

Windows10的搜索功能是真的方便,这点用惯了Windows10的小伙伴应该都知道,不过它有个小问题,就是Windows10虽然会自动联网搜索,但默认使用微软自家的Bing搜索引擎和Edge...

面试秘籍:call、bind、apply的区别,面试官为什么总爱问这三位?

引言你有没有发现,每次JavaScript面试,面试官总爱问你call、bind和apply的区别?好像这三个方法成了通关密码,掌握了它们,就能顺利过关。其实不难理解,面试官问这些问题,不...

记住这8招,帮你掌握“追拍“摄影技法—摄影早自习第422日

杨海英同学提问:请问叶梓老师,我练习追拍时,总也不能把运动的人物拍清晰,速度一般掌握在1/40-1/60,请问您如何把追拍拍的清晰?这跟不同的运动形式有关系吗?请您给讲讲要点,谢谢您!摄影:Damia...

[Sony] 有点残酷的测试A7RII PK FS7

都是好机!手中利器!主要是最近天天研究fs5,想知道fs5与a7rii后期匹配问题,苦等朋友的fs5月底到货,于是先拿手里现有的fs7小测一下,十九八九也能看到fs5的影子,另外也了解一下fs5k标配...

AndroidStudio_Android使用OkHttp发起Http请求

这个okHttp的使用,其实网络上有很多的案例的,但是,如果以前没用过,copy别人的直接用的话,可以发现要么导包导不进来,要么,人家给的代码也不完整,这里自己整理一下.1.引入OkHttp的jar...

ESL-通过事件控制FreeSWITCH_es事务控制

通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...

【调试】perf和火焰图_perf生成火焰图

简介perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些...

文本检索控件也玩安卓?dtSearch Engine发布Android测试版

dtSearchEngineforLinux(原生64-bit/32-bitC++和JavaAPIs)和dtSearchEngineforWin&.NET(原生64-bi...

网站后台莫名增加N个管理员,记一次SQL注入攻击

网站没流量,但却经常被SQL注入光顾。最近,网站真的很奇怪,网站后台不光莫名多了很多“管理员”,所有的Wordpres插件还会被自动暂停,导致一些插件支持的页面,如WooCommerce无法正常访问、...

多元回归树分析Multivariate Regression Trees,MRT

多元回归树(MultivariateRegressionTrees,MRT)是单元回归树的拓展,是一种对一系列连续型变量递归划分成多个类群的聚类方法,是在决策树(decision-trees)基础...

JMETER性能测试_JMETER性能测试指标

jmeter为性能测试提供了一下特色:jmeter可以对测试静态资源(例如js、html等)以及动态资源(例如php、jsp、ajax等等)进行性能测试jmeter可以挖掘出系统最大能处...