python字典--知識點總結
前言:
程式碼使用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}
字典的內建方法(綠色為常用方法):
clear() \color {lime}{clear()}:清除字典中的所有元素。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.clear()
>>> d
{}copy() \color {lime}{copy()}:複製字典的值,如果直接用 “=” 複製的是字典的地址。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> c = d.copy()
>>> c
{‘a’:2, ‘b’:3, ‘c’:5}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}
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
has_key(key) \color {lime}{has\_key(key)}:查詢字典中是否含有鍵key,返回 True 或者 False
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.has_key(‘a’)
True
items() \color {lime}{items()}:返回字典的元素。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.items()
[(‘a’, 2), (‘c’, 5), (‘b’, 3)]- iteritems():items()以列表的形式返回字典元素的鍵、值,而iteritems()以迭代器形式返回。python3已丟棄此方法。
- viewitems():效果如下。python3已丟棄此方法
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.viewitems()
dict_items([(‘a’, 100), (‘c’, 5), (‘b’, 3), (‘d’, 200)])
keys() \color {lime}{keys()}:返回字典的所有鍵。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.keys()
[‘a’, ‘c’, ‘b’]- iterkeys():keys()以列表的形式返回字典元素的鍵,而iterkeys()以迭代器形式返回。python3已丟棄此方法。
- viewkeys():效果如下。python3已丟棄此方法。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.viewitems()
dict_keys([‘a’, ‘c’, ‘b’, ‘d’])values() \color {lime}{values()}:返回字典的所有值
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.values()
[2, 5, 3]- itervalues():values()以列表的形式返回字典元素的值,而itervalues()以迭代器形式返回。python3已丟棄此方法。
- viewvalues():效果如下。python3已丟棄此方法。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.viewitems()
dict_values([100, 5, 3, 200])
pop(key) \color {lime}{pop(key)}:將key所對應的元素“出棧”,並返回該key對應的值。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.pop(‘b’)
3
>>> d
{‘a’: 2, ‘c’: 5}popitem() \color {lime}{popitem()}:將字典的第一個元素出棧,但是由於字典是無序的,所有popitem()具有一定的隨機性。結果返回一個列表,包含出棧的鍵、值。
>>> d = {‘a’:2, ‘b’:3, ‘c’:5}
>>> d.popitem(‘b’)
(‘a’, 2)
>>> d
{‘c’: 5, ‘b’: 3}
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}
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}
各種報錯資訊:
- TypeError: ‘builtin_function_or_method’ object is not iterable———–經常是因為呼叫方法,忘了新增括號()導致出錯。
轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/bone_ace/article/details/46958199)
相關文章
- 老Python總結的字典相關知識Python
- pythoon字典資料{}知識及總結
- 知識點總結
- Python入門必備知識點總結Python
- python基礎語法知識點總結Python
- Java 知識點總結Java
- django知識點總結Django
- iOS 知識點總結iOS
- MongoDB知識點總結MongoDB
- HDFS知識點總結
- HBase知識點總結
- jQuery 知識點總結jQuery
- Kafka知識點總結Kafka
- Tomcat 知識點總結Tomcat
- MySQL知識點總結MySql
- 前端知識點總結——Vue前端Vue
- 知識點漏缺總結
- 事務知識點總結
- HBase知識點集中總結
- 前端知識點總結——HTML前端HTML
- 前端知識點總結——DOM前端
- docker常用知識點總結Docker
- mysql 常用知識點總結MySql
- (5)FIFO知識點總結
- HTML-知識點總結HTML
- RabbitMQ 常用知識點總結MQ
- MySQL 索引知識點總結MySql索引
- 資料結構----字典及部分知識總結(2018/10/18)資料結構
- Python基礎知識之字典Python
- 跨域知識點部分總結跨域
- Java基礎知識點總結Java
- java面試知識點總結Java面試
- 總結的小知識點(一)
- 筆試題知識點總結筆試
- 瀏覽器知識點總結瀏覽器
- HTTP協議知識點總結HTTP協議
- Vue學習知識點總結Vue
- 總結的Java知識點集合Java
- HTML5知識點總結HTML