字典dict常用方法


 

    字典是列表中常用的方法,我們經常處理字典,字典嵌套,很多復雜的操作都來自於基礎,只是改變了樣式而已,本質是不變的。下面來看看字典中常用的功能都有那些:

    1.clear(self)

    def clear(self): # real signature unknown; restored from __doc__
    """ D.clear() -> None. Remove all items from D. """
    pass

    clear(self)清除字典中的元素,下面來看看一個實例:

    >>> d1 = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> d1.clear()
  >>> d1
  {}
    首先,我們定義了一個字典,然后使用clear(self)清除這個字典,clear()清除了字典中所有的鍵-值對。

   2.copy(self)

    def copy(self): # real signature unknown; restored from __doc__
    """ D.copy() -> a shallow copy of D """
    pass

    把一個字典賦給另一個變量,我們知道,如果a = b,使用clear()清楚b的內容的時候,a中的內容也會被清除掉。而copy()是新生成了一個變量。

    3.fromkeys(*args,**kwargs)

    def fromkeys(*args, **kwargs): # real signature unknown
    """ Returns a new dict with keys from iterable and values equal to value. """

        生成一個新字典,鍵(key)不同,值(value)相同。
    pass

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}

    >>> new_dic = dic.fromkeys(["k1"],"v1")
  >>> new_dic
  {'k1': 'v1'}
  >>> n_dic = dic.fromkeys(["k1","k2","k3","k4"],"v1")
  >>> n_dic
  {'k4': 'v1', 'k2': 'v1', 'k3': 'v1', 'k1': 'v1'}
  >>> d1 = dic.fromkeys(["k1","k2"],"v3")
  >>> d1
  {'k2': 'v3', 'k1': 'v3'}
    4.get(self,k,d=None)

    def get(self, k, d=None): # real signature unknown; restored from __doc__
    """ D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. """
    pass

    get(self,k,d=None)獲取字典中的鍵,返回對應的值,如果鍵不存在,則返回d=None,默認是None,我們也可以自己定義,如果獲取不到會怎樣,下面我們來看兩個例子:

    我們知道,可以通過鍵得到對應的值:

    1.直接獲取值

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic["k1"]
  'v1'
  >>> dic["k2"]
  'v2'
  >>> dic["k4"]
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  KeyError: 'k4'
    我們知道,如果字典中存在鍵,一定會返回對應的值,"k4"不存在字典中,結果報錯,說鍵值錯誤dic[key]=value.
    2.使用get(self,k,d=None)獲取值

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.get("k1")
  'v1'
  >>> dic.get("k2")
  'v2'
  >>> dic.get("k4")
  >>> None
  >>> dic.get("k4","alexsb")         (1)
  'alexsb'

    如果字典中存在指定的鍵,那么就會返回對應的值;我們知道"k4"不存在於字典中,使用get(self,k,d=None)沒有報錯,返回None,我們也可以自己定義返回值,(1)處,我們設定當"k4"不存在的時候返回"alexsb",由於"k4"不存在,因而返回"alexsb".

    5.items(self)

    def items(self): # real signature unknown; restored from __doc__
    """ D.items() -> a set-like object providing a view on D's items """

        """返回字典中的鍵-值對
    pass

    items(self)返回字典中的鍵-值對,示例如下:

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.items()
  dict_items([('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')])
    6.keys(self)

    def keys(self): # real signature unknown; restored from __doc__
    """ D.keys() -> a set-like object providing a view on D's keys """
    pass

    keys(self)返回字典中的鍵值,實例如下:

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.keys()
  dict_keys(['k2', 'k3', 'k1'])
  >>> type(dic.keys())
  <class 'dict_keys'>
    7.values(self)    def values(self): # real signature unknown; restored from __doc__
    """ D.values() -> an object providing a view on D's values """
    pass

    values(self)返回字典中的值,實例如下:

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.values()
  dict_values(['v2', 'v3', 'v1'])
    8.pop(self,k,d=None)

    def pop(self, k, d=None): # real signature unknown; restored from __doc__
    """
    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
    If key is not found, d is returned if given, otherwise KeyError is raised
    """
    pass

    由於字典是無序的,因此必須指定刪除哪個值,pop(self,k,d=None),下面來看一下:

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.pop()
  Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
  TypeError: pop expected at least 1 arguments, got 0
    上面我們使用pop()刪除字典元素的時候,提示錯誤,至少需要一個參數,但是我們沒有提供,要記住,字典是無序的,沒有順序,因此必須我們指定鍵值,告訴字典刪除哪個鍵值的元素。

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.pop("k3")
  'v3'
  >>> dic.pop("k4")
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  KeyError: 'k4'
  >>> dic.pop("k4","alexsb")
  'alexsb'
    在上面,我們使用pop(self,k,d=None)刪除字典中的元素,必須指定鍵值;如果鍵值不存在,則會提示KeyError:"k4",我們也可以指定當鍵值不存在的時候返回什么值,我們在上面設置,當鍵值不存在的時候返回"alexsb",由於"k4"不存在,因此,因此輸出提示"alexsb"

    9.popitem(self)

    def popitem(self): # real signature unknown; restored from __doc__
    """
    D.popitem() -> (k, v), remove and return some (key, value) pair as a
    2-tuple; but raise KeyError if D is empty.
    """
    pass

    popitem(self)由於字典是無序的,popitem(self)沒有指定參數,因此是隨機刪除字典中的元素,下面我們來看一下:

    dic = {'k4': 'v4', 'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  print(dic.popitem())

    打印出來的結果時隨機變動的,一會刪除"k4",一會"k1"沒有規律,因此popitem(self)是隨機刪除字典中的元素。

    10.setdefault(self,k,d=None)

    def setdefault(self, k, d=None): # real signature unknown; restored from __doc__
    """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
    pass

    setdefault(self,k,d=None)向字典中加入鍵-值對,如果沒有指定值,那么默認值為None,示例如下:

    >>> dic = {'k4': 'v4', 'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
    >>> dic.setdefault("k5")
  >>> dic
  {'k5': None, 'k4': 'v4', 'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.setdefault("k6","sb")
  'sb'
  >>> dic
  {'k2': 'v2', 'k5': None, 'k6': 'sb', 'k4': 'v4', 'k3': 'v3', 'k1': 'v1'}
    可以看出,當我們向列表中插入元素時,使用setdefault(self,k,d=None)時,如果沒有定義值,那么就默認是None。否則,等價於dict[key] = value.

    11.update(self,E=None,**F)

    def update(self, E=None, **F): # known special case of dict.update
    """
    D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
    If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
    If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
    In either case, this is followed by: for k in F: D[k] = F[k]
    """
    pass

    update(self,E=None,**F)更新列表中的值,也可以用在添加新的鍵-值對進來,示例如下:

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.update({"k5":123})
  >>> dic
  {'k2': 'v2', 'k5': 123, 'k3': 'v3', 'k1': 'v1'}
  >>> dic.update({"k5":456})
  >>> dic
  {'k2': 'v2', 'k5': 456, 'k3': 'v3', 'k1': 'v1'}

    >>> dic = {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.update({"k4":"v4","k5":123})
  >>> dic
  {'k2': 'v2', 'k5': 123, 'k4': 'v4', 'k3': 'v3', 'k1': 'v1'}

    可以使用update()向字典中添加字典,即把另外一個字典中的鍵-值對添加到這個字典中的鍵值對。

    更新字典中的鍵值對,必須以字典的形式進行跟新。

    12.__contains__(self,*args,**kwargs)

    def __contains__(self, *args, **kwargs): # real signature unknown
    """ True if D has a key k, else False. """
    pass

    __contains__(self,*args,**kwargs)查看字典中是否包含特定的鍵值對,實例如下:

    >>> dic = {'k2': 'v2', 'k5': 123, 'k4': 'v4', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.__contains__("k1")
  True
  >>> dic.__contains__("v2")
  False
    __contains__(self,*args,**kwargs)判斷字典中是否包含指定的鍵值,在字典中鍵是唯一的,所以查找包含都是對鍵的操作。

    13.__delitem__(self,*args,**kwargs)

    def __delitem__(self, *args, **kwargs): # real signature unknown
    """ Delete self[key]. """
    pass
    __delitem__(self,*args,**kwargs)刪除字典中的鍵值對,相當於pop(),popitem(),實例如下:

    >>> dic = {'k2': 'v2', 'k5': 123, 'k4': 'v4', 'k3': 'v3', 'k1': 'v1'}
  >>> dic.__delitem__("k4")
  >>> dic
  {'k2': 'v2', 'k5': 123, 'k3': 'v3', 'k1': 'v1'}
    14.__getattribute__(self,*args,**kwargs)

    def __getattribute__(self, *args, **kwargs): # real signature unknown
    """ Return getattr(self, name). """
    pass

    15.__getitem__(self,y)

    def __getitem__(self, y): # real signature unknown; restored from __doc__
    """ x.__getitem__(y) <==> x[y] """

    """獲取字典中指定鍵的值"""
    pass

    >>> dic = {'k2': 'v2', 'k5': 123, 'k3': 'v3', 'k1': 'v1'}
  >>> dic.__getitem__("k5")
  123
    16.__iter__(self,*args,**kwargs)

    def __iter__(self, *args, **kwargs): # real signature unknown
    """ Implement iter(self). """
    pass

    17.__len__(self,*args,**kwargs)

    def __len__(self, *args, **kwargs): # real signature unknown
    """ Return len(self). """
    pass

    __len__(self,*args,**kwargs)統計字典的長度,等價於len(dict),示例如下:

    >>> dic = {'k2': 'v2', 'k5': 123, 'k3': 'v3', 'k1': 'v1'}
  >>> dic.__len__()
  4
  >>> len(dic)
  4
    18.__new__(*args,**kwargs)

    def __new__(*args, **kwargs): # real signature unknown
    """ Create and return a new object. See help(type) for accurate signature. """
    pass
    19.__repr__(self,*args,**kwargs)

    def __repr__(self, *args, **kwargs): # real signature unknown
    """ Return repr(self). """
    pass

    20.__setitem__(self,*args,**kwargs)

    def __setitem__(self, *args, **kwargs): # real signature unknown
    """ Set self[key] to value. """
    pass

    __setitem__(self,k,v)向字典中添加元素,必須指定鍵和值,否則會報錯,如下:

  >>> dic = {'k2': 'v2', 'k5': 123, 'k6': 666, 'k1': 'v1'}
  >>> dic.__setitem__("k7")
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  TypeError:  expected 2 arguments, got 1
    可以看出,__setitem__(self,k,v)需要兩個參數,但是我們只提供了一個參數給它。

    >>> dic = {'k2': 'v2', 'k5': 123, 'k1': 'v1'}
  >>> dic.__setitem__("k6",666)
  >>> dic
  {'k2': 'v2', 'k5': 123, 'k6': 666, 'k1': 'v1'}


免責聲明!

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



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