Learning Python 009 dict(字典)和 set
Python dict(字典)和 set
dict (字典)是什么東西
dict全稱dictionary。為什么這個(gè)數(shù)據(jù)結(jié)構(gòu)取名叫dict。因?yàn)閐ict的實(shí)現(xiàn)原理和查字典是一樣的。dict使用了鍵-值(key-value)存儲(chǔ)的方式。就好比在字典里查某個(gè)字一樣。dict數(shù)據(jù)結(jié)構(gòu)中的鍵(key)就好比字典中的索引表里這個(gè)字對(duì)應(yīng)的頁(yè)碼。值(value)就好比字典中這個(gè)字的內(nèi)容。這樣的特點(diǎn),效果就是查找速度極快。
例如:一個(gè)人“名字”-“成績(jī)”的對(duì)照表,直接根據(jù)名字查找成績(jī):
定義dict字典
>>> d = {'Aobo': 59, 'Shutong': 98, 'Yunjie': 86} >>> d['Aobo'] 59向dict中,添加元素
>>> d['Yue'] = 67 >>> d['Yue'] 67修改dict中,某個(gè)鍵(key)的值(value)
>>> d['Aobo'] = 88 >>> d['Aobo'] 88判斷 鍵(key)是否存在于這個(gè)dict(字典)中
如果,key不存在,會(huì)報(bào)錯(cuò)。比如:
>>> d['Harry'] Traceback (most recent call last):File "<stdin>", line 1, in <module> KeyError: 'Harry'避免出現(xiàn)這樣的報(bào)錯(cuò)的方法有:
1. 使用in判斷key是否存在:
注意:
返回None的時(shí)候,在終端上的Python交互式命令行不顯示結(jié)果。
刪除dict中,指定鍵元素
使用pop(key)方法,就可以將對(duì)應(yīng)的key-value在dict中刪除:
>>> d.pop('Aobo') 88 >>> d {'Shutong': 98, 'Yunjie': 86, 'Yue': 67}使用dict,你需要注意的事情
特點(diǎn)是比較出來(lái)的,所以,和list比較,dict有幾個(gè)特點(diǎn)
1. 速度快。無(wú)論是查找還是插入,速度都極快,并且不會(huì)隨著key的增加而變慢。
2. 需要占用大量的內(nèi)存,內(nèi)存浪費(fèi)多。
那么,list的特點(diǎn)就是:
1. 查找和插入的時(shí)間隨著元素的增加而增加;
2. 占用空間小,浪費(fèi)內(nèi)存很少。
注意:key的值是不可變的。
字符串、整數(shù)等都是不可變的,可以放心地作為key。而list是可變的,就不能作為key。
set
介紹
與dict數(shù)據(jù)結(jié)構(gòu)類似,只是它只有key,沒(méi)有value
定義一個(gè)set數(shù)據(jù)結(jié)構(gòu)
使用set()函數(shù)定義set數(shù)據(jù)結(jié)構(gòu)。在()里面添加一個(gè)list數(shù)據(jù)([]):
>>> s = set([1, 2, 3]) >>> s {1, 2, 3} >>> s = set([1, 1, 2, 2, 3, 3]) >>> s {1, 2, 3}注意:
set會(huì)自動(dòng)將重復(fù)的元素過(guò)濾掉。所以,在set中,沒(méi)有重復(fù)的key。
向set數(shù)據(jù)類型中,添加元素
使用add()方法,添加元素。
>>> s.add(4) >>> s {1, 2, 3, 4}可以添加重復(fù)的key,但是不會(huì)有效果:
>>> s.add(3) >>> s {1, 2, 3, 4}向set數(shù)據(jù)類型中,刪除指定key的元素
使用remove()方法,可以刪除元素:
>>> s.remove(4) >>> s {1, 2, 3}對(duì)set數(shù)據(jù),進(jìn)行交集和并集等操作
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}使用set,需要注意的事情
set和dict之間唯一的區(qū)別就是,set沒(méi)有存儲(chǔ)對(duì)應(yīng)的value。
參考網(wǎng)站:
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143167793538255adf33371774853a0ef943280573f4d000
轉(zhuǎn)載于:https://www.cnblogs.com/aobosir/p/5928639.html
總結(jié)
以上是生活随笔為你收集整理的Learning Python 009 dict(字典)和 set的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP+ExtJS 文件上传示例
- 下一篇: websocket python爬虫_p