python元组和字典的内建函数实例详解
本文实例讲述了python元祖和字典的内建函数。分享给大家供大家参考,具体如下:
元组Tuple
元组是序列类型一种,也是不可变类型数据结构,对元组修改后会生成一个新的元组。所以Tuple对象并没有太多的内置方法。
count()查询一个元素在Tuple中的数量
count(…)
T.count(value)->integer–returnnumberofoccurrencesofvalue
返回一个value在Tuple出现的次数,即个数。
In[5]:tup=('My','name','is','Jmilk') In[6]:tup.count('My') Out[6]:1 In[7]:tup.count('my') Out[7]:0
index()查询元素在Tuple中的索引号
index(…)
T.index(value,[start,[stop]])->integer–returnfirstindexofvalue.
RaisesValueErrorifthevalueisnotpresent.
返回在指定范围中[start,[stop]],第一次出现的value的索引。
In[15]:tup.index('Jmilk',2,4) Out[15]:3
元组的遍历
In[16]:tup Out[16]:('My','name','is','Jmilk') In[17]:foriintup: ....:printi ....: My name is Jmilk
字典Dictionary
字典数据类型使用键值对的映射关系来关联数据。
创建一个字典对象
简单的创建
In[18]:dic={'name':'Jmilk','age':23,'city':'BJ'}
fromkey()使用keys来创建字典
fromkeys(…)
dict.fromkeys(S[,v])->NewdictwithkeysfromSandvaluesequaltov.
vdefaultstoNone.
通过一个keys的序列来创建字典,可以指定keys映射的value,默认为None。
In[125]:newDic={}.fromkeys(['name','age','city'],'notfound') In[126]:newDic Out[126]:{'age':'notfound','city':'notfound','name':'notfound'}
查询
查询字典中key映射的value
In[44]:dic['age'] Out[44]:23
get()查询Key映射的value,当key不存在时,返回默认值
get(…)
D.get(k[,d])->D[k]ifkinD,elsed.ddefaultstoNone.
自动添加(字典的默认值):自动添加是字典数据类型的特性,即使一个Key起初不存在于字典中,也可为Key分配一个值,以此来建立新的项。
In[6]:dic Out[6]:{'age':23,'city':'BJ','name':'Jmilk'} In[7]:dic.get('age',24) Out[7]:23 In[8]:dic.get('a',24) Out[8]:24
若不使用get()函数去获取一个不存在的key对应的value时,会报错。
len(dictName)获取字典长度
len(…)
len(object)->integer
Returnthenumberofitemsofasequenceormapping.
len()是Python的内建函数,可以获取序列或字典的长度,即元素的个数。
In[34]:len(dic) Out[34]:3
keys()列出dict的Keys列表
keys(…)
D.keys()->listofD'skeys
In[22]:dic.keys() Out[22]:['city','age','name']
values()列出dict的values列表
values(…)
D.values()->listofD'svalues
In[23]:dic.values() Out[23]:['BJ',23,'Jmilk']
添加字典项
通过赋值为字典添加一个项
格式:dictName[keyN]=valueN
In[25]:dic Out[25]:{'age':23,'city':'BJ','name':'Jmilk'} In[27]:dic['sex']='man' In[28]:dic Out[28]:{'age':23,'city':'BJ','name':'Jmilk','sex':'man'}
通过setdefault()增加
setdefault(…)
D.setdefault(k[,d])->D.get(k,d),alsosetD[k]=difknotinD
当key存在时,callD.get(k,d)方法,即获取key映射的value。当key不存在时,执行D[k]=d,即为dict增加一个新的元素。
In[25]:dic Out[25]:{'age':23,'city':'BJ','name':'Jmilk'} In[26]:dic.setdefault('age',24) Out[26]:23 In[27]:dic.setdefault('sex','man') Out[27]:'man' In[28]:dic Out[28]:{'age':23,'city':'BJ','name':'Jmilk','sex':'man'}
删除字典项
del语句,删除字典中key对应的一个项
del语句可以操作所有的迭代器对象。
In[40]:dic Out[40]:{'age':23,'city':'BJ','name':'Jmilk'} In[41]:deldic['age'] In[42]:dic Out[42]:{'city':'BJ','name':'Jmilk'}
popitem()将随机一个字典键值对弹出(删除并返回)
popitem(…)
D.popitem()->(k,v),removeandreturnsome(key,value)pairasa
2-tuple;butraiseKeyErrorifDisempty.
以tuple(k,v)的形式删除字典的一个元素,并返回。需要一个接受返回的对象。若字典为空,则报错。
In[32]:dic Out[32]:{'age':23,'city':'BJ','name':'Jmilk','sex':'man'} In[34]:dic.popitem() Out[34]:('city','BJ') In[35]:dic.popitem() Out[35]:('age',23)
pop()弹出key映射的value
pop(…)
D.pop(k[,d])->v,removespecifiedkeyandreturnthecorrespondingvalue.
Ifkeyisnotfound,disreturnedifgiven,otherwiseKeyErrorisraised
In[39]:dic Out[39]:{'name':'Jmilk','sex':'man'} In[40]:dic.pop('name') Out[40]:'Jmilk'
一般情况下,当字典为空时调用了D.pop()方法的化会触发一个KeyError。但是也可以通过下面的调用方式来添加key不存在时的返回默认值。
当Key不存在时,返回默认值,避免报错:
In[20]:dic Out[20]:{'age':23,'city':'BJ','name':'Jmilk'} In[21]:dic.pop('sex','man') Out[21]:'man'
clear()清空字典中的所有项
clear(…)
D.clear()->None.RemoveallitemsfromD.
清空所有项目,返回None。
In[58]:dic Out[58]:{'age':23,'city':'BJ','name':'Jmilk'} In[59]:dic.clear() In[60]:dic Out[60]:{}
修改
简单的修改dict中key映射的value值
格式:“`dictName[key]=newValue
In[50]:dic['city']='GZ' In[51]:dic Out[51]:{'age':23,'city':'GZ','name':'Jmilk'}
update()更新字典
update(…)
D.update([E,]**F)->None.UpdateDfromdict/iterableEandF.
IfEpresentandhasa.keys()method,does:forkinE:D[k]=E[k]
IfEpresentandlacks.keys()method,does:for(k,v)inE:D[k]=v
Ineithercase,thisisfollowedby:forkinF:D[k]=F[k]
使用另一个字典来更新一个字典,通过匹配的key来更新value。
In[137]:dic Out[137]:{'age':23,'city':'BJ','name':['jmilk']} In[138]:newInfo={'name':'chocolate','age':22,'city':'ZH'} In[139]:dic.update(newInfo) In[140]:dic Out[140]:{'age':22,'city':'ZH','name':'chocolate'}
当然,也可以只更新其中若干个value。
字典的复制
copy()浅复制
字典的浅复制与List的浅复制类似,都只是对引用对象的copy。
In[107]:dic1=dic.copy() In[108]:dic,dic1 Out[108]: ({'age':23,'city':'BJ','name':['jmilk','chocolate']}, {'age':23,'city':'BJ','name':['jmilk','chocolate']}) In[109]:dic1['age']=24 In[110]:dic,dic1 Out[110]: ({'age':23,'city':'BJ','name':['jmilk','chocolate']}, {'age':24,'city':'BJ','name':['jmilk','chocolate']})
注意:对浅copy得到的新字典中的value做替换操作(替换整个value),是不会影响到元字典的。但是如果对新字典中的value做了修改操作(修改其中一部分),就会影响到原字典。如下:
In[111]:dic1['name'].remove('chocolate') In[112]:dic,dic1 Out[112]: ({'age':23,'city':'BJ','name':['jmilk']}, {'age':24,'city':'BJ','name':['jmilk']})
因为两个key的id指向同一个数据对象,对数据对象做了修改(改变数据对象)后就会都受到影响。但替换(改变引用对象)整个value,即将新字典中key的id指向另一个数据对象,不会改变原数据对象。
深copy和浅copy的详细介绍,请参考:https://www.nhooo.com/article/172490.htm
类型转换
item()将每个字典项,转化为Tuple和List的混合数据类型
items(…)
D.items()->listofD's(key,value)pairs,as2-tuples
In[42]:dic Out[42]:{'age':23,'city':'BJ','name':'Jmilk'} In[43]:dic.items() Out[43]:[('city','BJ'),('age',23),('name','Jmilk')] In[44]:[xforparamindicforxindic]#嵌套列表降维 Out[44]:['city','age','name','city','age','name','city','age','name']
因为返回的是List类型对象,所以可以使用索引操作符。
In[46]:dic.items()[0] Out[46]:('city','BJ') In[48]:dic.items()[0][0] Out[48]:'city'
由此可以看出,可以对一个对象做操作,主要由对象的类型来决定。
成员关系
判断一个kay是否存在dict中
In[56]:dic Out[56]:{'age':23,'city':'GZ','name':'Jmilk'} In[57]:dic.has_key('age') Out[57]:True
True⇒key存在dict中
False⇒key不存在dict中
使用成员关系运算符判断
成员资格:'age'indic只能通过key的成员关系来判断。
In[45]:dic Out[45]:{'age':23,'city':'BJ','name':'Jmilk'} In[46]:'age'indic Out[46]:True In[47]:'age'notindic Out[47]:False
字典的遍历
In[62]:dic Out[62]:{'age':23,'city':'GZ','name':'Jmilk'} In[63]:forkey_num,val_numindic.items(): ....:printkey_num,val_num ....: cityGZ age23 nameJmilk
格式化输出value
通过格式化%(key)format来输出映射的value
In[53]:dic Out[53]:{'age':23,'city':'BJ','name':'Jmilk'} In[54]:print'plecallme%(name)s,Thx!'%dic plecallmeJmilk,Thx! In[55]:print'Im%(age)dyearsold.'%dic Im23yearsold.
只要keyindict,就能使用任意的转换说明符。
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python列表(list)操作技巧总结》、《Python字典操作技巧汇总》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。