游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Python字典操作零基础学习,一步到位

  来源:Python数据之道
  作者:阳哥
  大家好,我是阳哥。
  字典(dict)是python中的基础数据类型之一,字典的设计并不复杂,我们经常会用到这种数据类型。
  同时,字典也有一些比较实用的情景。
  学习任何一种编程语言,基础数据类型都是必备的底层基础,今天,我们来学习下Python中字典的使用。
  主要内容包括:字典的基本用法字典推导式嵌套字典01、基本用法
  在Python中,字典是一种可以将相关的两个信息关联起来的操作,并且字典可存储的信息量几乎不受限制。
  字典是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据。为了保存具有映射关系的数据,Python提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为key;另一组数据可通过key来访问,被称为value。
  创建字典
  字典是以key、value的形式创建的。
  字典的每个键值keyvalue对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中,格式如下所示:
  d{key1:value1,key2:value2}
  一般情况下,字典的创建可以有以下几种方式:创建一个空的字典mydict1{}创建key值为整数的字典mydict2{1:apple,2:ball}创建key值为string的字典mydict3{name1:apple,name2:ball}创建key值为数字和string混合的字典mydict4{name:apple,1:〔2,4,3〕}用dict()函数创建字典mydict5dict({1:apple,2:ball})以元组的形式组成序列创建字典mydict6dict(〔(1,apple),(2,ball)〕)print(mydict1:,mydict1)print(mydict2:,mydict2)print(mydict3:,mydict3)print(mydict4:,mydict4)print(mydict5:,mydict5)print(mydict6:,mydict6)
  结果如下:mydict1:{}mydict2:{1:apple,2:ball}mydict3:{name1:apple,name2:ball}mydict4:{name:apple,1:〔2,4,3〕}mydict5:{1:apple,2:ball}mydict6:{1:apple,2:ball}
  也可以通过下面的方式来创建空白字典创建空白字典的另一种方式mydict7dict()print(mydict7:,mydict7)mydict7
  结果如下:{}
  获取字典中的元素
  通过key来获取value
  获取字典中的元素,可以直接通过key值来获取对应的value,如下:mydict8{name:John,age:25,1:〔2,4,3〕}print(mydict8〔name〕)print(mydict8。get(name))
  结果如下:JohnJohn
  请注意,如果字典的key值中没有该元素,则不能获取相应的value,这种情况下产生错误。print(mydict8〔name1〕)
  结果如下:KeyErrorTraceback(mostrecentcalllast)ipythoninput4eedb02e2ace8inmodule1print(mydict8〔name1〕)KeyError:name1
  通过value来获取key
  通过value来获取key值,在Python中并没有提供直接的方法,我们可以通过自定义函数来实现,如下:defgetkeys(d,value):return〔kfork,vind。items()ifvvalue〕
  函数中,d是字典。
  在字典中修改或添加元素
  在字典中,可以修改已有key对应的value值,或者添加新的keyvalue键值对数据,如下:mydict8{name:John,age:25,1:〔2,4,3〕}修改已有key对应的value的值mydict8〔age〕98添加新的keyvalue数据组mydict8〔gender〕manmydict8
  结果如下:{name:John,age:98,1:〔2,4,3〕,gender:man}
  从字典中删除元素
  从字典中删除元素,或者删除整个字典,有以下一些方式。
  pop()方法
  移除字典数据pop()方法的作用是:删除指定给定键所对应的值,返回这个值并从字典中把它移除。使用pop()方法来删除mydict8{name:John,age:25,1:〔2,4,3〕}mydict8。pop(age)mydict8
  结果如下:{name:John,1:〔2,4,3〕}
  del方法使用del方法来删除mydict8{name:John,age:25,1:〔2,4,3〕}delmydict8〔name〕mydict8
  结果如下:{age:25,1:〔2,4,3〕}
  popitem()方法使用popitem()方法来删除mydict8{name:John,age:25,1:〔2,4,3〕,gender:man,school:UCI,city:NewYork}mydict8。popitem()mydict8
  结果如下:{name:John,age:25,1:〔2,4,3〕,gender:man,school:UCI}
  关于popitem()方法:
  在Python3。5版本以及之前的时候,使用popitem()可能是随机删除的,但我曾经用的Python3。6版本,好像不是随机删除的,是删除的最后一项。
  从Python3。7版本开始,使用popitem()方法是删除最后一项,因为字典默认是记住了顺序的:Ordereddictionariesarejustlikeregulardictionariesbuthavesomeextracapabilitiesrelatingtoorderingoperations。
  Theyhavebecomelessimportantnowthatthebuiltindictclassgainedtheabilitytorememberinsertionorder(thisnewbehaviorbecameguaranteedinPython3。7)。
  另外,我查阅了一下Python3。7版本中的描述,如下:popitem()
  Removeandreturna(key,value)pairfromthedictionary。PairsarereturnedinLIFOorder。
  popitem()isusefultodestructivelyiterateoveradictionary,asoftenusedinsetalgorithms。Ifthedictionaryisempty,callingpopitem()raisesaKeyError。
  Changedinversion3。7:LIFOorderisnowguaranteed。Inpriorversions,popitem()wouldreturnanarbitrarykeyvaluepair。
  https:docs。python。org3librarystdtypes。htmlmappingtypesdict
  在Python3。7版本中,是按照LIFO的原则进行删除的,是有序进行删除的。
  LIFO(Lastin,firstout)即后进来的先删除(也可理解为按后面往前的排序进行删除)
  clear()方法
  clear()方法是用来清除字典中的所有数据,因为是原地操作,所以返回None(也可以理解为没有返回值)使用clear()方法来清空字典中的所有数据,返回的是一个空字典mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}mydict8。clear()mydict8
  结果如下:{}
  del方法
  del方法可以删除字典中指定key值的内容。
  另外,del可以删除整个字典,与clear()方法的清空字典中所有数据是不一样的。演示如下:
  使用del方法是删除字典中指定key值对应的内容使用del方法是删除字典中指定key值对应的内容mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}delmydict8〔age〕mydict8
  结果如下:{name:John,1:〔2,4,3〕,gender:man}
  使用del方法是删除整个字典,删除后,再运行程序,会报错误使用del方法是删除整个字典,删除后,再运行程序,会报错误mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}delmydict8mydict8
  结果如下:NameErrorTraceback(mostrecentcalllast)ipythoninput113d2a02242727inmodule4delmydict856mydict8NameError:namemydict8isnotdefined
  字典内置函数方法
  Python字典包含了以下内置函数:
  序号函数及描述len(dict)计算字典元素个数,即键的总数。str(dict)输出字典可打印的字符串表示。type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。
  len(),str(),type()函数mydict6dict(〔(1,apple),(2,ball)〕)mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}print(len(mydict8))print(str(mydict6))print(type(mydict8))
  结果如下:4{1:apple,2:ball}classdict
  Python字典包含以下一些方法:
  函数函数描述clear()删除字典内所有元素,返回空字典copy()返回一个字典的浅复制fromkeys(seq〔,val〕)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值get(key,defaultNone)返回指定键的值,如果值不在字典中返回default值items()以列表返回可遍历的(键,值)元组数组keys()以列表返回一个字典所有的键setdefault(key,defaultNone)和get()类似,但如果键不存在于字典中,将会添加键并将值设为defaultupdate(dict2)把字典dict2的键值对更新到dict里values()以列表返回字典中的所有值pop(key〔,default〕)删除字典给定键key所对应的值,返回值为被删除的值。
  key值必须给出。否则,返回default值。popitem()随机返回并删除字典中的一对键和值。
  Python3。6及以后版本,以LIFO的原则进行删除的,是有序进行删除的。
  clear(),get(),pop(),popitem()等在上面已介绍的方法,这里不做重复,仅演示其他方法的使用。
  copy,keys,values,items方法mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}print(copy:,mydict8。copy())print(keys:,mydict8。keys())print(values:,mydict8。values())print(items:,mydict8。items())
  结果如下:copy:{name:John,age:25,1:〔2,4,3〕,gender:man}keys:dictkeys(〔name,age,1,gender〕)values:dictvalues(〔John,25,〔2,4,3〕,man〕)items:dictitems(〔(name,John),(age,25),(1,〔2,4,3〕),(gender,man)〕)
  update方法
  通过update方法,可以更新字典的数据内容:mydict6{name:Lemon,age:25,1:〔2,4,3〕,gender:man}mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}mydict8。update(mydict6)mydict8
  结果如下:{name:Lemon,age:25,1:〔2,4,3〕,gender:man}
  fromkeys方法
  fromkeys()方法的演示如下:
  请注意,该结果与zip()方法之后的结果是不一样的。seq〔name,age,city〕value〔Lemon,18,cs〕mydict9dict。fromkeys(seq,value)mydict9
  结果如下:{name:〔Lemon,18,cs〕,age:〔Lemon,18,cs〕,city:〔Lemon,18,cs〕}
  zip()方法seq〔name,age,city〕value〔Lemon,18,cs〕mydict10dict(zip(seq,value))mydict10
  结果如下:{name:Lemon,age:18,city:cs}
  setdefault方法
  dict。setdefault(key,defaultNone)
  该方法接收两个参数,第一个参数是健的名称,第二个参数是默认值。
  假如字典中不存在给定的键,则把默认值赋值给对应的value,并返回默认值;
  反之,不修改value,只返回value。mydict8{name:John,age:25,1:〔2,4,3〕,gender:man}print(字典中存在的key,返回对应value:,mydict8。setdefault(age,0))print(字典中不存在的key,返回默认值:,mydict8。setdefault(age1,0))
  结果如下:字典中存在的key,返回对应value:25字典中不存在的key,返回默认值:0
  此外,还可以用setdefault()方法统计一个列表里单词出现的次数:用setdefault()方法统计一个列表里单词出现的次数strings(Lemon,kitten,Lemon,Lemon,lemonzs,Lemon,Lemon,lemonzs)counts{}forkwinstrings:counts〔kw〕counts。setdefault(kw,0)1counts
  结果如下:{Lemon:5,kitten:1,lemonzs:2}02、字典推导式(dictcomprehension)
  字典推导式的一般表达式如下:
  {key:valuefor(key,value)initerable}
  有些用法与列表推导式是类似的,可以参考下面的内容:Python数据类型List介绍(上)Python数据类型List介绍(下)列表推导式
  用字典推导式的方法创建字典:mydict01{x:xxforxinrange(6)}mydict01
  结果如下:{0:0,1:1,2:4,3:9,4:16,5:25}
  通过两个list创建字典:keys〔name,age,city〕values〔Lemon,18,cs〕mydict02{k:vfor(k,v)inzip(keys,values)}mydict02
  结果如下:{name:Lemon,age:18,city:cs}
  在特定条件下,用字典推导式的方法创建字典:mydict03{x:xxforxinrange(10)ifx20}mydict03
  结果如下:{0:0,2:4,4:16,6:36,8:64}03、嵌套型字典
  什么是嵌套型的字典
  字典是以key、value的形式创建的,而嵌套型的字典有一个特征,就是key对应的value值也可以是一个字典。最简洁的嵌套型字典如下:d{key1:{key3:value3},key2:{key4:value4}}
  创建一个嵌套型字典nesteddict01{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:18,city:changsha}}nesteddict01
  结果如下:{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:18,city:changsha}}
  上述的嵌套型字典中,字典第一层的key分别是1和2,而他们对应的value值又是都是字典,里面的字典的key都是name,age和city,但对应的value不一样。
  从嵌套型字典中获取元素
  从嵌套型字典中获取元素,跟从list,以及数组中获取元素时有些类似的。
  嵌套型字典用〔〕进行不同层级元素的获取。nesteddict01{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:18,city:changsha}}print(nesteddict01〔1〕〔name〕)print(nesteddict01〔2〕〔city〕)
  结果如下:Lemonchangsha
  修改嵌套型字典的元素(更改、增加或删除元素)
  针对嵌套型字典,同样是可以更新、增加或删除元素的。
  增加一个空的字典nesteddict01{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:18,city:changsha}}增加一个空的字典nesteddict01〔3〕{}nesteddict01
  结果如下:{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:18,city:changsha},3:{}}
  修改或增加新的元素修改元素内容nesteddict01〔2〕〔age〕26增加新的元素nesteddict01〔3〕〔name〕zwsnesteddict01
  结果如下:{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:26,city:changsha},3:{name:zws}}
  在嵌套型字典中直接添加一个字典在嵌套型字典中直接添加一个字典nesteddict01〔5〕{name:rx,age:3,city:ly}nesteddict01
  结果如下:{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:26,city:changsha},3:{name:zws},5:{name:rx,age:3,city:ly}}
  删除某个具体元素内容删除某个具体元素内容delnesteddict01〔5〕〔city〕nesteddict01
  结果如下:{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:26,city:changsha},3:{name:zws},5:{name:rx,age:3}}
  删除嵌套字典里面的某个字典删除嵌套字典里面的某个字典delnesteddict01〔5〕nesteddict01
  结果如下:{1:{name:Lemon,age:18,city:cs},2:{name:Lemonzs,age:26,city:changsha},3:{name:zws}}
  通过for循环来获取嵌套字典内的元素formainid,maininfoinnesteddict01。items():print(mainid:,mainid)forkeyinmaininfo:print(key:,maininfo〔key〕)
  结果如下:mainid:1name:Lemonage:18city:csmainid:2name:Lemonzsage:26city:changshamainid:3name:zws
  用pprint输出嵌套型字典
  用pprint可以使字典显示层次更清晰,需要安装pprint,安装命令如下:
  pipinstallpprint
  演示如下:需要安装pprintpipinstallpprintpprint可以使字典显示层次更清晰importpprintmenu{dinner:{chicken:good,beef:average,vegetarian:{tofu:good,salad:{caeser:bad,italian:average}},pork:bad}}pprint。pprint(menu)
  结果如下:{dinner:{beef:average,chicken:good,pork:bad,vegetarian:{salad:{caeser:bad,italian:average},tofu:good}}}
  嵌套型字典的一些用途
  可能有些疑惑,字典嵌套这么多层,在哪些地方可以用呢?
  这里分享一个用途。嵌套型字典,经常在机器学习中的决策树算法中涉及到。
  比如下面的menu,是一个字典。它也可以用树的形式显示出来,这在决策树中会经常用到。menu{dinner:{chicken:good,beef:average,vegetarian:{tofu:good,salad:{caeser:bad,italian:average}},pork:bad}}
  示例:fromsklearn。treeimportDecisionTreeClassifier,exportgraphvizfromsklearnimporttreefromsklearn。datasetsimportloadwinefromIPython。displayimportSVGfromgraphvizimportSourcefromIPython。displayimportdisplayloaddatasetdataloadwine()featurematrixXdata。datatargetvectorydata。targetclasslabelslabelsdata。featurenamesprintdatasetdescriptionprint(data。DESCR)estimatorDecisionTreeClassifier()estimator。fit(X,y)graphSource(tree。exportgraphviz(estimator,outfileNone,featurenameslabels,classnames〔0,1,2〕,filledTrue))display(SVG(graph。pipe(formatsvg)))
  可视化效果如下:
  04小结
  以上就是python中关于字典使用的基础内容,在实践中,咱们还会大量应用到字典。相对来说,嵌套字典会比较复杂些。当我们熟练使用字典的基本方法时,还是可以应对这些问题的。
  有时候,也会有一些比较独特的字典,比如keyvalue键值对中的value是pandas中的dataframe,其基础原理,一些常用的方法还是一样的。

动圈耳机采用同轴三圈架构是噱头吗?最近,小不点的同轴三圈大耳GYFU正式上市了。我和这款产品的主创人员非常熟悉,也在产品的研发过程中提了一些意见建议,最终的成品也是我非常满意和喜欢的。因此我想用三篇文章来具体介……欧盟无线产品CERED认证测试项目有哪些?无线电设备CERED测试项目有哪些?19995EC指令已实施多年,诸多地方满足不了现有产品。其实欧盟早已在2007年就已开始起草新指令,但进度没有那么快,于是在2011年再提交……智能建造是什么为什么做什么怎么做?智能建造已成为建筑业发展的必然趋势和转型升级的重要抓手。但是目前在推进智能建造过程中仍存在不落地、不务实的情况。本文从智能建造是什么、为什么和做什么等方面对智能建造的内涵、意义……借助AI和大数据技术,探迹科技如何改革传统的销售模式?一个月能做些什么?从订单缺乏,业务停滞,到实现业绩逆势增长200,并完成数字化销售领域的革新,这是深圳市铭华航电工艺技术有限公司跑出来的速度。无独有偶,一个月内,税……电源适配器盐雾测试标准方法电源适配器盐雾测试标准方法1。电源适配器为什么要做盐雾测试?电源适配器在储存、运输和使用过程中,经常受到周围环境有害因素的影响,电源适配器工作性能、使用可靠性和寿命……浅谈未来建筑业智慧建造转型的必要性目前,全球建筑运营能耗已占到总能耗的30以上,若再加上建设过程中的能耗,这一指标接近50。此外,城市建筑垃圾占到垃圾总量的30到40,与建筑有关的空气污染、光污染等占到综合环境……麦克风METI备案办理所需材料麦克风METI备案办理所需材料。日本经济产业省(METI,MinistryofEconomy,TradeandIndustry)发布该方法详细信息,其制定者是该部门商务信息政策……韩国KC认证和KCC认证KCC:KoreaCommunicationCommission即韩国通讯委员会根据韩国《电气通讯基本法》第33条,以及《无线电波法》第46条和d第57条的规定,建立了广……欧盟MSDS化学说明书办理MSDS证书怎样办理?产品办理MSDS证书有什么作用?MSDS是化学品的安全说明书(MaterialSafetyDataSheet),国际上称作化学品安全信息卡,简称MSDS(……超跑SUVHiPhiX太科幻!翼展门对标ModelX,超大三提到超跑SUV你可能心里会有概念,再跟你提高合这个品牌相信很多人都没听说说过,但是提到展翼门设计以及车灯自带表情包,如果你关注汽车行业,那你一定不陌生,那就是被称为超跑SUV的……4GDTU新突破,小身材大用途通讯终端作为物联网的核心部件,其表现直接关系到应用方案在市场中的整体竞争力。随着物联网应用大规模落地,物联网设备微型化、集成化趋势明显。超小体积以市场需求为驱动,有……Redmi首款真无线蓝牙耳机RedmiAirDots,售价9刚刚在Redmi春季新品发布会上,除了期待已久的RedmiNote7Pro和Redmi7手机外,Redmi还带来了一款真无线蓝牙耳机RedmiAirDots。RedmiA……
极简无广,安全与纯净的绝佳体验现在的手机浏览器没有人会用老款的吧?QQ、UC、360这些我早已拒之门外!能碾压它们的浏览器有很多,良心的也不是没有,神器不私藏,今天就给大家推荐一款纯净、巨好用的浏览器……道家洞天福地洞天福地就是地上的仙山,它包括十大洞天、三十六小洞天和七十二福地,构成道教地上仙境的主体部分。除此之外,道教徒还崇拜五镇海渎、三十六靖庐、二十四治等,中国五岳则包括在洞天之内。……科技的魅力!办公软件大集合大家好,我是九剑。办公,自然需要很多工具,更需要打开很多工具。当我们需要在大量相同类型文件中定位目标时,预览,往往是我们最快捷的途径。传统的预览很简单,把鼠标……摸鱼的真正奥秘!教你用正确的姿势摸鱼摸鱼,别名划水,一种神奇的存在,泛指在工作或者学习等所谓的办正事的时候去玩。关于如何摸鱼的探讨可谓从未停止过。时至今日,如何做到最完美的摸鱼,已经成为一种艺术。……中国移动副总经理简勤愿与合作伙伴开放合作,共创生态共荣新格局在全球大力推进数智化发展的今天,各行各业都在加速实现数字产业化、产业数字化和用户消费升级等方面的转型。作为5G产业生态的先行者和赋能者,中国移动同样也在积极推进着数智化转型节奏……死多一次,这家生鲜电商想卖身却无人接盘wumiancaijing。com自身造血能力不足的呆萝卜被戳破了泡沫,但严格点说,资本不再相信的,可能是整个生鲜电商。本文由无冕财经(wumiancaijing)……吉利博越X将亮相天津车展,此前预售11。68万起!天津车展,将在明天,也就是9月29号正式开展。吉利博越X将会在车展中亮相,此前已经开启过预售,预售价格在11。6814。68万之间,正式上市时间,则会在10月份。从外观角……显示器参数怎么看(二)接着上篇的HDR400和亮度,本篇就讲一下右侧的10bit色深。标准描述是这样的:色彩深度,是计算机图形学领域表示在位图或者视频帧缓冲区中储存1像素的颜色所用的位数。……魅族和小米又对上了!魅族Note9VS红米Note7Pro魅族在2018年的表现并不算好,虽然16th系列初期一机难求,但最后却因供货不足错过了最佳销售期。目前在支撑千元机市场的是魅族X8,前几日X8售价下调300元降到1298元,但……名企头条李国庆致歉是我们夫妻没做好京东曝拟在香港二次上市李国庆致歉:当当没错,员工没错,我们夫妻大股东之间没有做好4月28日,在夺取当当公章之后,李国庆再发声称:在特殊时期,每天下午2点,我安排助理到公司接需要盖章的文件。需要……帝瓦雷技术加持HiFi级智能音箱,华为SoundX正式发布11月25日,华为MatePad及全场景新品发布会在上海U时尚艺术中心隆重举行。活动现场,全球首款震撼双低音HiFi智能音箱华为SoundX正式发布,产品售价1999元。作为华……这钱我感觉不应该赚网购买个东西,都会给一个好评返现,外卖有的也是一样的套路,全都是按上面要求拍照片,文字好评,打五星,之后给你返红包,就像下面的图片。网购可能大部分人都会看评分,看评……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网