python基礎(chǔ)教程之字典操作詳解
來源:易賢網(wǎng) 閱讀:1177 次 日期:2014-05-19 20:52:12
溫馨提示:易賢網(wǎng)小編為您整理了“python基礎(chǔ)教程之字典操作詳解”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了python中的字典操作詳解,需要的朋友可以參考下。

字典

dictionary1.鍵值對的集合(map)2.字典是以大括號“{}”包圍的數(shù)據(jù)集合3.字典是無序的,在字典中通過鍵來訪問成員??勺兊模汕短?,可以原處修改擴展等,不產(chǎn)生新的字典4.字典的鍵,可以是字符串(大小寫敏感),數(shù)字常量或元組(不可變類型),同一個字典的鍵可以混用類型。字典的鍵必須是可哈希的元組作為鍵的條件是,元組內(nèi)的值都是不可變類型

代碼如下:

a=(1,2)#可以作為鍵

b=(1,2,[3,4])#不可以

5.字典的值可以是任意類型,可以嵌套,可以自由修改聲明

創(chuàng)建字典的幾種方式:1.基本

代碼如下:

d={}#空字典

d={'name':'tom','age':22}

#等價

d={}

d['name']='tom'

d['age']=22

2.dict

代碼如下:

d=dict()#空

d=dict(name='tom',age=22)d=dict([('name','tom'),('age',22)])

#等價

keys=['name','age']

values=['tom',22]

d=dict(zip(keys,values))3.fromkeys不指定default_value的話,默認None

代碼如下:

>>>dict.fromkeys(['name','age'],'default_value')

{'age':'default_value','name':'default_value'}

基本操作0.獲取幫助

代碼如下:

help(dict)1.判定鍵是否存在于字典中

代碼如下:

ifkind:#knotin

dosomething()

2.讀取

代碼如下:

d={'a':1,'b':2}

printd['a']#得到1,但是若鍵不存在,將引發(fā)異常KeyError。慎用,建議不使用printd.get('c',3)#得到3,get方法,若是鍵不存在,返回第二個參數(shù)default_value.若是沒有設(shè)default_value返回None

處理missing-key錯誤三種方式,根據(jù)具體需要

代碼如下:

ifkind:

printd[k]try:

printd[k]

exceptKeyError:

dosomething()printd.get(k,default)

#等價d[k]ifkindelsedefault3.遍歷方式1:

代碼如下:

forkeyind:

printkey,d[key]

#等價forkeyind.keys()

方式2:

代碼如下:

forkey,valueind.items():

printkey,value

4.修改方式1:某個鍵值對

代碼如下:

d['key']='newvalue'

方式2:批量添加或更新

代碼如下:

#另一個字典

d.update({'key':'newvalue'})#這里支持一整組值#元組列表

d.update([('a',1),('b',2)])#每個元組兩個元素,(key,value)#**key

d.update(c=3,e=4)5.刪除

代碼如下:

deld['key']

value=d.pop('key')#刪除并返回值

d.clear()#清空

6.其他:len(d)#長度

d.keys()#key列表

d.values()#value列表

d.items()#(key,value)列表

c=d.copy()#淺拷貝

#返回迭代器,節(jié)省內(nèi)存

d.iterkeys()

d.itervalues()

d.iteritems()

d.setdefault('name','ken')#若原來沒有,設(shè)置,否則原值不變其他

1.字典排序按照key排序

代碼如下:

keys=d.keys()

keys.sort()

forkeyinkeys:

printd.get(key)

按照value進行排序

代碼如下:

sorted(d.items(),lambdax,y:cmp(x[1],y[1]))另外:

代碼如下:

#假設(shè)d為字典

sorted(d)#返回同sorted(d.keys()),返回的是key排序

2.自定義對象作為key必須:

代碼如下:

def__hash__(self):

pass

def__eq__(self,other):

pass

3.字典拷貝淺拷貝:

代碼如下:

c=d.copy()#深拷貝必須用copy模塊

代碼如下:

formcopyimportdeepcopy

c=deepcopy(d)

4.一種使用場景假設(shè)有一個很大的列表l,假設(shè)10w條記錄有一個小列表b,要判斷b中元素是否在l中如果:

代碼如下:

foriinb:

ifiinl:

dosomething()

你會發(fā)現(xiàn)非常非常慢...因為第二個in語句,會遍歷10w條….改進:

代碼如下:

d=dict.fromkeys(l)

foriinb:

ifiind:

dosomething()

#空間換時間,O(n)->O(1)

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:python基礎(chǔ)教程之字典操作詳解
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)