python學習教程(六)--dict與set

dict

鍵-值(key-value)存儲,具有極快的查找速度着茸。

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}   \# 初始化
d['Michael']
結(jié)果是:95

改變某一個key的value方法:

d['Adam'] = 67

如果key不存在诸老,dict就會報錯:

>>> d['Thomas']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Thomas'

避免key不存在的錯誤夕凝,有兩種辦法:
一是通過in判斷key是否存在:

 'Thomas' in d
False

二是通過dict提供的get方法谈宛,如果key不存在,可以返回None情妖,或者自己指定的value:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

注意:返回None的時候Python的交互式命令行不顯示結(jié)果睬关。
要刪除一個key,用pop(key)方法毡证,對應的value也會從dict中刪除

>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

dict內(nèi)部存放的順序和key放入的順序是沒有關(guān)系的电爹。

需要牢記的第一條就是dict的key必須是不可變對象。

在Python中料睛,字符串丐箩、整數(shù)等都是不可變的,因此恤煞,可以放心地作為key屎勘。而list是可變的,就不能作為key:

>>> key = [1, 2, 3]
>>> d[key] = 'a list'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

set

set和dict類似居扒,也是一組key的集合概漱,但不存儲value。由于key不能重復喜喂,所以瓤摧,在set中,沒有重復的key玉吁。
創(chuàng)建一個set照弥,需要提供一個list作為輸入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

傳入的參數(shù)[1, 2, 3]是一個list,而顯示的{1, 2, 3}只是告訴你這個set內(nèi)部有1进副,2这揣,3這3個元素,顯示的順序也不表示set是有序的影斑。
重復元素在set中自動被過濾:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

通過add(key)方法可以添加元素到set中给赞,可以重復添加,但不會有效果:

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

通過remove(key)方法可以刪除元素:

>>> s.remove(4)
>>> s
{1, 2, 3}

set可以看成數(shù)學意義上的無序和無重復元素的集合鸥昏,因此,兩個set可以做數(shù)學意義上的交集姐帚、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'

對于不變對象來說吏垮,調(diào)用對象自身的任意方法,也不會改變該對象自身的內(nèi)容。相反膳汪,這些方法會創(chuàng)建新的對象并返回唯蝶,這樣,就保證了不可變對象本身永遠是不可變的遗嗽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粘我,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子痹换,更是在濱河造成了極大的恐慌征字,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娇豫,死亡現(xiàn)場離奇詭異匙姜,居然都是意外死亡,警方通過查閱死者的電腦和手機冯痢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門氮昧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浦楣,你說我怎么就攤上這事袖肥。” “怎么了振劳?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵椎组,是天一觀的道長。 經(jīng)常有香客問我澎迎,道長庐杨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任夹供,我火速辦了婚禮灵份,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哮洽。我一直安慰自己填渠,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布鸟辅。 她就那樣靜靜地躺著氛什,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匪凉。 梳的紋絲不亂的頭發(fā)上枪眉,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音再层,去河邊找鬼贸铜。 笑死堡纬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蒿秦。 我是一名探鬼主播烤镐,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棍鳖!你這毒婦竟也來了炮叶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渡处,失蹤者是張志新(化名)和其女友劉穎镜悉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骂蓖,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡积瞒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了登下。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茫孔。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖被芳,靈堂內(nèi)的尸體忽然破棺而出缰贝,到底是詐尸還是另有隱情,我是刑警寧澤畔濒,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布剩晴,位于F島的核電站,受9級特大地震影響侵状,放射性物質(zhì)發(fā)生泄漏赞弥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一趣兄、第九天 我趴在偏房一處隱蔽的房頂上張望绽左。 院中可真熱鬧,春花似錦艇潭、人聲如沸拼窥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲁纠。三九已至,卻和暖如春鳍寂,著一層夾襖步出監(jiān)牢的瞬間改含,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工迄汛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捍壤,地道東北人刃唤。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像白群,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子硬霍,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 最近在慕課網(wǎng)學習廖雪峰老師的Python進階課程帜慢,做筆記總結(jié)一下重點。 基本變量及其類型 變量 在Python中唯卖,...
    victorsungo閱讀 1,692評論 0 5
  • 什么是dict 我們已經(jīng)知道粱玲,list 和 tuple 可以用來表示順序集合,例如拜轨,班里同學的名字: ['Adam...
    _王子_閱讀 1,285評論 0 1
  • 一抽减、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當然包括負整數(shù)橄碾,在Python程序...
    績重KF閱讀 1,707評論 0 1
  • Python 是一種相當高級的語言卵沉,通過 Python 解釋器把符合語法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機器碼...
    Python程序媛閱讀 1,908評論 0 3
  • 1.Python之什么是dict 我們已經(jīng)知道,list 和 tuple 可以用來表示順序集合法牲,例如史汗,班里同學的名...
    ChinaGoodStaff閱讀 4,230評論 0 1