python基礎教程之字典操作詳解

字號:


    這篇文章主要介紹了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.若是沒有設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')#若原來沒有,設置,否則原值不變其他
    1.字典排序按照key排序
    代碼如下:
    keys=d.keys()
    keys.sort()
    forkeyinkeys:
    printd.get(key)
    按照value進行排序
    代碼如下:
    sorted(d.items(),lambdax,y:cmp(x[1],y[1]))另外:
    代碼如下:
    #假設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.一種使用場景假設有一個很大的列表l,假設10w條記錄有一個小列表b,要判斷b中元素是否在l中如果:
    代碼如下:
    foriinb:
    ifiinl:
    dosomething()
    你會發(fā)現(xiàn)非常非常慢...因為第二個in語句,會遍歷10w條….改進:
    代碼如下:
    d=dict.fromkeys(l)
    foriinb:
    ifiind:
    dosomething()
    #空間換時間,O(n)->O(1)