国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python入門(三):dict和set類型

2019-11-08 02:14:52
字體:
來源:轉載
供稿:網友

1 dict

  dict的創建:假設我們要根據名字找到相應的成績,利用list或者tuple表示不方便,所以需要創建dict:

d = {

      'Adam' : 95,

      'Lisa' : 85,

      'Bart' : 59

}

  我們把名字稱為key,對應的成績稱為value,dict就是通過 key 來查找 value。{} 表示這是一個dict,然后按

照key: value, 寫出來即可。最后一個 key: value 的逗號可以省略。由于dict也是集合,len() 函數可以計算任意

集合的大小:

>>> len(d)

3

  dict的訪問:可以簡單地使用 d[key] 的形式來查找對應的 value,這和 list 很像,不同之處是,list 必須

使用索引返回對應的元素,而dict使用key:

>>> PRint d['Adam']95

  注意: 通過 key 訪問 dict 的value,只要 key 存在,dict就返回對應的value。如果key不存在,會直接報錯:

KeyError。要避免 KeyError 發生,有兩個辦法:一是先判斷一下 key 是否存在,用 in 操作符:

if 'Paul' in d:    print d['Paul']

  二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:

>>> print d.get('Paul')None

  dict的特點:(1)查找速度快,無論dict有10個元素還是10萬個元素,查找速度都一樣。而list的查找速度隨

著元素增加而逐漸下降。不過dict的查找速度快不是沒有代價的,dict的缺點是占用內存大,還會浪費很多內容,

list正好相反,占用內存小,但是查找速度慢。由于dict是按 key 查找,所以,在一個dict中,key不能重復;

 (2)存儲的key-value序對是沒有順序的!這和list不一樣;

 (3)作為 key 的元素必須不可變。Python的基本類型如字符串、整數、浮點數都是不可變的,都可以作為 key。

但是list是可變的,就不能作為 key。

  dict的元素添加:dict是可變的,也就是說,我們可以隨時往dict中添加新的 key-value。

>>> d['Paul'] = 72

>>> print d{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}

  需要注意的是,如果 key 已經存在,則賦值會用新的 value 替換掉原來的 value。

  dict的遍歷:由于dict也是一個集合,所以,遍歷dict和遍歷list類似,都可以通過 for 循環實現。直接使用

for循環可以遍歷 dict 的 key:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }>>> for key in d:...     print key... LisaAdamBart

  由于通過 key 可以獲取對應的 value,因此,在循環體內,可以獲取到value的值。

2 set

set的創建:有的時候,我們只想要 dict 的 key,不關心 key 對應的 value,目的就是保證這個集合的元素不會重

復,這時,set就派上用場了。set 持有一系列元素,這一點和 list 很像,但是set的元素沒有重復,而且是無序

的,這點和 dict 的 key很像。創建 set 的方式是調用 set() 并傳入一個 list,list的元素將作為set的元素:

>>> s = set(['A', 'B', 'C'])

>>> print sset(['A', 'C', 'B'])

  上述打印的形式類似 list, 但它不是 list,仔細看還可以發現,打印的順序和原始 list 的順序有可能是不同

的,因為set內部存儲的元素是無序的。

  因為set不能包含重復的元素,所以,當我們傳入包含重復元素的 list,set會自動去掉重復的元素。

  set的訪問:由于set存儲的是無序集合,所以我們沒法通過索引來訪問。訪問 set中的某個元素實際上就是判斷

一個元素是否在set中。我們可以用 in 操作符判斷。例如,存儲了班里同學名字的set:

>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])

>>> 'Bart' in sTrue

>>> 'bart' in sFalse

  看來大小寫很重要,'Bart' 和 'bart'被認為是兩個不同的元素。

  set的特點:(1)set的內部結構和dict很像,唯一區別是不存儲value,因此,判斷一個元素是否在set中速度很

快。(2)set存儲的元素和dict的key類似,必須是不變對象,因此,任何可變對象是不能放入set中的。(3)set存

儲的元素也是沒有順序的。

  set的遍歷:由于 set 也是一個集合,所以,遍歷 set 和遍歷 list 類似,都可以通過 for 循環實現。直接使

用 for 循環可以遍歷 set 的元素:

>>> s = set(['Adam', 'Lisa', 'Bart'])>>> for name in s:...     print name... LisaAdamBart

  注意: 觀察 for 循環在遍歷set時,元素的順序和list的順序很可能是不同的,而且不同的機器上運行的結果也

可能不同。

  set的更新:由于set存儲的是一組不重復的無序元素,因此,更新set主要做兩件事:(1)把新的元素添加到set

中;(2)把已有元素從set中刪除。

添加元素時,用set的add()方法:

>>> s = set([1, 2, 3])>>> s.add(4)>>> print sset([1, 2, 3, 4])

  如果添加的元素已經存在于set中,add()不會報錯,但是不會加進去了。

  刪除set中的元素時,用set的remove()方法:

>>> s = set([1, 2, 3, 4])>>> s.remove(4)>>> print sset([1, 2, 3])

如果刪除的元素不存在set中,remove()會報錯。所以用add()可以直接添加,而remove()前需要判斷。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林口县| 玛纳斯县| 枣阳市| 汝城县| 辽源市| 江阴市| 天祝| 澄江县| 盐津县| 静宁县| 蒙城县| 龙里县| 师宗县| 织金县| 衡水市| 南汇区| 孙吴县| 卓资县| 滦南县| 翁源县| 九台市| 华容县| 台湾省| 葫芦岛市| 加查县| 阿克苏市| 巢湖市| 壤塘县| 繁峙县| 保山市| 米林县| 山阳县| 梓潼县| 衡东县| 德格县| 安新县| 延吉市| 五家渠市| 万荣县| 眉山市| 元阳县|