1. 程式人生 > >11、字典

11、字典

常用 指定 peer 對象 zip 錯誤 ict logs err

字典

基本概念

  • 字典是Python中唯一的映射類型(哈希表)。
  • 字典對象是可變的,但是字典的鍵必須使用不可變的對象,並且一個字典中可以使用不同類型的鍵值。
  • keys()或者values()返回鍵列表或值列表。
  • items()返回包含鍵值對的元值。
  • 示例:

    >>> dict={'name': 'jack', 'age' : 30, 'gender':'male' }
    >>> dict['name']
    'jack'
    >>> dict['age']
    30
    >>> dict['gender']
    'male'
    >>> dict.keys()
    ['gender', 'age', 'name']
    >>> dict.values()
    ['male', 30, 'jack']
    >>> dict.items()
    [('gender', 'male'), ('age', 30), ('name', 'jack')]

創建字典

  • dict = {}
  • 使用工廠方法dict()

    fdict=dict(['x',1], ['y',2])
  • 內建方法:fromkeys(),字典中的元素具有相同的值,默認為None

    ddict={}.fromkeys(('x','y'), -1)
    #輸出結果:{'x': -1, 'y': -1}

訪問字典中的值

  • 直接使用key訪問:key不存在會報錯,可以使用has_key()或者in和not in判斷,但是has_key方法即將廢棄。
  • 循環遍歷:for key in dict1.keys():
  • 使用叠代器:for key in dict1:

更新和刪除

  • 直接用鍵值訪問更新;內建的update()方法可以將整個字典的內容拷貝到另一個字典中。
  • del dict1[‘a‘]:刪除字典中鍵值為a的元素
  • dict1.pop(‘a‘):刪除並且返回鍵為‘a‘的元素
  • dict1.clear():刪除字典所有元素
  • del dict1:刪除整個字典

字典相關的內建函數

  • type(), str(), cmp()(cmp很少用於字典的比較,比較依次是字典的大小、鍵、值)

工廠函數dict()

* 例如:

dict(zip(('x','y'),(1,2)))
dict(x=1,y=2)
#輸出結果:{'x': 1, 'y': 2}
  • 使用字典生成字典比用copy慢,因此這種情況下推薦使用copy()

常用函數

  • len():返回序列的大小
  • hash() : 用於判斷某個對象是否可以做一個字典的鍵,非哈希類型報TypeError錯誤
  • dict.clear(): 刪除字典中的所有元素
  • dict.fromkeys(seq, val=None): 以seq中的元素為鍵創建並返回一個字典,val為制定默認值
  • dict.get(key, default=None): 返回key的value,如果該鍵不存在返回default指定的值
  • dict.has_key(key):判斷字典中是否存在key,建議使用in或not in代替
  • dict.items():返回健值對元組的列表
  • dict.keys():返回字典中鍵的列表
  • dict.iter*(): iteritems(), iterkeys(), itervalues()返回叠代子而不是列表
  • dict.pop(key[,default]):同get(),區別是若key存在,刪除並返回dict[key],若不存在則返回default,未指定值,拋出KeyError異常
  • dict.setdefault(key, default=None):同set(),若key存在則返回其value,若key不存在,則dict[key]=default
  • dict.update(dict2):將dict2中的鍵值對添加到字典dict中,如果有重復則覆蓋,原字典不存在的條目則添加進來。
  • dict.values():返回字典中所有值的列表

11、字典