python內置函數字典(dict)


一、字典dict定義初始化

  • 字典是key-value鍵值對的數據集合
  •  key的要求和set的元素要求一致,可hash才可以作為key
  •  字典是可變的,無序的,key不可重復
  •  d = dict() 或者d = {} 定義一個空字典
  •  dict(**kwargs) 使用name=value對 初始化一個字典

二、字典元素的訪問

  • d[key]: 返回key對應的值value,key不存在拋出KeyError異常
  • d.get(key[,default]): 返回key對應的值value,key不存在返回缺省值,如果沒有缺省值返回None
  • d.setdefault(key[,default]):返回key對應的值value,key不存在,添加kv對;value為default,並返回default,如果沒有default,缺省為None

三、字典增加和修改

  • d[key] = value: 將key對應的值修改為value,key不存在添加新的kv對
  • d.update([other]): 使用另一個字典的kv對更新本字典,key不存在,就添加;存在就覆蓋已經存在value
  • d.update(red=1)

四、字典的刪除

  • d.pop(key):key存在就移除,並返回它的value值,不存在返回默認值,沒有默認值就拋異常
  • d.popitem(): 移除並返回一個任意的鍵值對,字典為空,拋出異常ValueError
  • d.clear():清空字典

五、字典遍歷

  • 遍歷key:for k in d或者for k in d.keys()
  • 遍歷value: for k in d: print(d[k])
  • 遍歷item,即kv對: for item in d.items()或for k,v in d.items()
  • python3中,keys,values,items方法返回一個類似一個生成器的可迭代對象,不會把函數的返回結果復制到內存中
  • 舉例:
  •   {1: 'a', 2: 'b'}
      >>> for k in d:
       print(k)
      1
      2
      >>> for k in d.keys():
       print(k) 
      1
      2
      >>> for k in d:
       print(d[k]) 
      a
      b
      >>> for item in d.items():
       print(item) 
      (1, 'a')
      (2, 'b')
      >>> for k,v in d.items():
       print(k,v) 
      1 a
      2 b
      >>>

六、有序字典OrderedDict

  •  有序字典可以記錄元素插入的順序,打印的時候也是按照這個順序輸出打印
  • 舉例:
    •  >>> from collections import OrderedDict
    •  >>> import random
    •  >>> d = {'banana':3,'apple':4,'pear':1,'orange':2}
    •  >>> print(d)
    •  {'pear': 1, 'apple': 4, 'orange': 2, 'banana': 3}
    •  >>> keys = list(d.keys())
    •  >>> keys
    •  ['pear', 'apple', 'orange', 'banana']
    •  >>> random.shuffle(keys)
    •  >>> print(keys)
    •  ['banana', 'orange', 'apple', 'pear']
    •  >>> od = OrderedDict()
    •  >>> for key in keys:
    •   od[key] = d[key]  
    •  >>> print(od)
    •  OrderedDict([('banana', 3), ('orange', 2), ('apple', 4), ('pear', 1)])
    •  >>> print(od.keys())
    •  odict_keys(['banana', 'orange', 'apple', 'pear'])
    •  >>>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM