1. 程式人生 > 其它 >Python中的dict字典

Python中的dict字典

字典dict

介紹

  • key-value鍵值對的資料集合
  • 是可變的、無序的、key具有唯一性

字典建立

  • d = dict()
  • d = {}
  • Dict(**kwargs) 使用name=value初始化一個字典

字典訪問

  • d[key]
    • 返回key對應的value
    • key不存在丟擲keyError異常
  • get(key[, default])
    • 返回key對應的value
    • key不存在返回預設值,如果沒有default返回None
    • get方法不會拋異常
  • setdefault(key[, default])
    • 返回key對應的value
    • key不存在,則新增kv對,value為default值

字典增加和修改

  • d[key] = value
    • 將key對應的值修改為value
    • key不存在新增新的鍵值對
  • update([other]) —> None
    • 使用另一個字典的鍵值對更新本字典
    • key不存在,就新增
    • key存在,覆蓋已存在的key對應的value
    • 原處修改

字典刪除

  • pop(key[, default])
    • key存在,移除,並返回它的value
    • key不存在,返回給定的default
    • default未設定,key不存在則丟擲keyError
  • popitem()
    • 移除並返回一個任意的鍵值對
    • 字典為空,丟擲keyError
  • clear()
    • 清空字典

字典刪除

  • del語句
    • del d['c']
    • del本質上刪除的是一個物件的引用

字典遍歷

  • for … in dict

    • 遍歷key

      for k in d1:
          print(k)
      for k in d.keys():
          print(k)
      
    • 遍歷value

      for v in d.values():
          print(v)
      for v in d:
          print(d.get(v))
      
    • 遍歷鍵值對

    • for item in d.items():
          print(item)   # 返回值為元組
          
      for k,v in d.items()  # k,v 可使用結構方式
          print(k,v) # 返回k或者v
      
    • 總結

      • python3中,keys/values/items方法返回一個可迭代物件,不會將結果儲存在記憶體中
      • python2中,上面的方法會返回一個新的列表,佔據新的記憶體,所以python2中建議使用iterkeys、itervalues,會返回一個迭代器

字典的key

  • key的要求必須為可hash

預設字典defaultdict

  • Collections.defaultdict([default_factory[,...]])

    • 第一個引數是default_factory,預設是None,它提供了一個初始化函式,當key不存在,這個工廠函式來生成key對應的value
    from collections import defaultdict
    d1 = {}
    d2 = defaultdict(list) # 建立預設字典,如果key不存在,則生成k對應的空列表
    for k in "abcde":
        for v in range(5):
            if k not in d1.keys():
                d1[k] = []
            d1[k].append(v)
    print(d1)
            
    for k in "mnopq":
        for v in range(3):
            d2[k].append(v)  # 相當於呼叫預設字典的工廠函式判斷k是否存在,如果不存在則建立鍵值對,並新增v
    print(d2)
    

順序字典orderedDict

  • collections.OrderedDict([items])

    • 有序字典可以記錄元素插入的順序,列印的時候也是按照這個順序輸出。
    • key並不是按照加入的順序排列,可使用OrderedDict來順序排列
    # 普通字典
    >>> d = {}
    >>> d['apple'] = 3
    >>> d['orange'] = 4
    >>> d['pear'] = 1
    >>> d['banabna'] = 2
    >>> d
    {'orange': 4, 'pear': 1, 'apple': 3, 'banabna': 2}
    
    # 有序字典
    >>> from collections import OrderedDict
    >>> od = OrderedDict()
    >>> od['apple'] = 3
    >>> od['orange'] = 4
    >>> od['pear'] = 1
    >>> od['banabna'] = 2
    >>> od
    OrderedDict([('apple', 3), ('orange', 4), ('pear', 1), ('banabna', 2)])