python字典--知識點總結

九茶發表於2015-07-19

前言:

程式碼使用python2.7


字典的建立:

方式1:

>>> d = {'a':2,'b':3,'c':5}
>>> d
{'a': 2, 'c': 5, 'b': 3}

方式2:

>>> d = {}
>>> d['a'] = 2
>>> d['b'] = 3
>>> d['c'] = 5
>>> d
{'a': 2, 'c': 5, 'b': 3}

方式3:

>>> d = dict((['a',2], ['b',3], ['c',5]))
{'a': 2, 'c': 5, 'b': 3}

方式4:

>>> d = {}.fromkeys(('a','b','c'), 2)   # fromkeys() 方法將值都設為了2
{'a': 2, 'c': 2, 'b': 2}

巢狀定義:

>>> d = {'letter':{'a':2, 'b':3, 'c':5},
         'number':[100,200,700],
         'character':('*', '&', '^'),
         'others':'happy'}
>>> d
{'character': ('*', '&', '^'), 'number': [100, 200, 700], 'letter':{'a': 2, 'c': 5, 'b': 3}, 'others': 'happy'}


新增:

方式1:

直接新增:

>>> d = {'a':2, 'b':3}
>>> d
{'a': 2, 'b': 3}
>>> d['c'] = 5
>>> d
{'a': 2, 'c': 5, 'b': 3}

方式2:

setdefault() 方法。

方式3:

update() 方法。

方式4:

如果是新增多個元素,可以先將其轉化成字典,再利用字典合併


刪除:

方式1:

del 命令:

>>> d = {'a':2, 'b':3, 'c':5}
>>> del d['b']
>>> d
{'a': 2, 'c': 5}
>>> del d
>>> d
{}

方式2:

pop() 方法。

方式3:

clear() 方法刪除所有元素。


排序:

>>> d = {'c':3, 'd':4, 'b':5, 'a':2}
>>> sorted(d.iteritems(), key = lambda asd:asd[0], reverse = False)   #對鍵進行遞增排序
[('a', 2), ('b', 5), ('c', 3), ('d', 4)]
>>> sorted(d.iteritems(), key = lambda asd:asd[0], reverse = True)   #對鍵進行遞減排序
[('d', 4), ('c', 3), ('b', 5), ('a', 2)]
>>> sorted(d.iteritems(), key = lambda asd:asd[1], reverse = False)   #對值進行遞增排序
[('a', 2), ('c', 3), ('d', 4), ('b', 5)]
>>> sorted(d.iteritems(), key = lambda asd:asd[1], reverse = True)   #對值進行遞減排序
[('b', 5), ('d', 4), ('c', 3), ('a', 2)]


字典的合併:

方式1:

利用items()方法獲取所有元素,再將所有元素組成一個字典:

>>> d1 = {'a':2, 'b':3, 'c':5}
>>> d2 = {'a':10, 'd':100}
>>> d = dict(d1.items() + d2.items())
>>> d
{'a': 10, 'c': 5, 'b': 3, 'd': 100}

方式2:

利用 update() 方法(此方式比方式1快許多)。

兩個列表合併成字典:

>>> a1 = {'a', 'b', 'c'}
>>> a2 = {2, 3, 5}
>>> d = dict(zip(a1, a2))
>>> d
{'a': 2, 'c': 3, 'b': 5}
>>> d2 = dict(map(lambda x,y:[x,y], a1, a2))
>>> d2
{'a': 2, 'c': 3, 'b': 5}


字典的內建方法(綠色為常用方法):

  1. clear()
    \color {lime}{clear()}
    :清除字典中的所有元素。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.clear()
    >>> d
    {}
  2. copy()
    \color {lime}{copy()}
    :複製字典的值,如果直接用 “=” 複製的是字典的地址。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> c = d.copy()
    >>> c
    {‘a’:2, ‘b’:3, ‘c’:5}
  3. fromkeys(seq,value=None)
    \color {lime}{fromkeys(seq, value = None)}
    :根據列表(或元組)seq作為鍵新建一個字典,值統一設為value。
    >>> mykeys = (‘a’, ‘b’, ‘c’)
    >>> d = dict.fromkeys(mykeys)
    >>> d
    {‘a’: None, ‘c’: None, ‘b’: None}
    >>> d = dict.fromkeys(mykeys, 2)
    >>> d
    {‘a’: 2, ‘c’: 2, ‘b’: 2}
  4. get(key,default=None)
    \color {lime}{get(key, default=None)}
    :找到鍵key對應的值,如果不存在則返回default。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.get(‘b’)
    3
    >>> d.get(‘d’, 100)
    100
  5. has_key(key)
    \color {lime}{has\_key(key)}
    :查詢字典中是否含有鍵key,返回 True 或者 False
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.has_key(‘a’)
    True
  6. items()
    \color {lime}{items()}
    :返回字典的元素。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.items()
    [(‘a’, 2), (‘c’, 5), (‘b’, 3)]
  7. iteritems():items()以列表的形式返回字典元素的鍵、值,而iteritems()以迭代器形式返回。python3已丟棄此方法。
  8. viewitems():效果如下。python3已丟棄此方法
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.viewitems()
    dict_items([(‘a’, 100), (‘c’, 5), (‘b’, 3), (‘d’, 200)])
  9. keys()
    \color {lime}{keys()}
    :返回字典的所有鍵。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.keys()
    [‘a’, ‘c’, ‘b’]
  10. iterkeys():keys()以列表的形式返回字典元素的鍵,而iterkeys()以迭代器形式返回。python3已丟棄此方法。
  11. viewkeys():效果如下。python3已丟棄此方法。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.viewitems()
    dict_keys([‘a’, ‘c’, ‘b’, ‘d’])
  12. values()
    \color {lime}{values()}
    :返回字典的所有值
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.values()
    [2, 5, 3]
  13. itervalues():values()以列表的形式返回字典元素的值,而itervalues()以迭代器形式返回。python3已丟棄此方法。
  14. viewvalues():效果如下。python3已丟棄此方法。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.viewitems()
    dict_values([100, 5, 3, 200])
  15. pop(key)
    \color {lime}{pop(key)}
    :將key所對應的元素“出棧”,並返回該key對應的值。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.pop(‘b’)
    3
    >>> d
    {‘a’: 2, ‘c’: 5}
  16. popitem()
    \color {lime}{popitem()}
    :將字典的第一個元素出棧,但是由於字典是無序的,所有popitem()具有一定的隨機性。結果返回一個列表,包含出棧的鍵、值。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.popitem(‘b’)
    (‘a’, 2)
    >>> d
    {‘c’: 5, ‘b’: 3}
  17. setdefault(key,value)
    \color {lime}{setdefault(key, value)}
    :查詢字典中是否有鍵為key的元素,如果沒有則新增一個元素,鍵為key,值為value。
    >>> d = {‘a’:2, ‘b’:3}
    >>> d.setdefault(‘c’,5)   # d 中不含鍵 ‘c’,則新增一個鍵 ‘c’,值為5
    >>> d
    {‘a’: 2, ‘c’: 5, ‘b’: 3}
    >>> d.setdefault(‘b’,5)   #如果 d 中包含鍵 ‘b’,則不新增
    >>> d
    {‘a’: 2, ‘c’: 5, ‘b’: 3}
  18. update(dict2)
    \color {lime}{update(dict2)}
    :將字典dict2中的元素更新到dict中去。
    >>> d1 = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d2 = {‘a’:10, ‘d’:100}
    >>> d1.update(d2)   #等價於 d1 = dict[d1, **d2]
    >>> d1
    {‘a’: 10, ‘c’: 5, ‘b’: 3, ‘d’: 100}


各種報錯資訊:

  1. TypeError: ‘builtin_function_or_method’ object is not iterable———–經常是因為呼叫方法,忘了新增括號()導致出錯。


轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/bone_ace/article/details/46958199

相關文章