python dict{}和set([])

pursuer.chen發表於2016-07-20

介紹

dict(dictionary),在其他語言中也稱為map,使用鍵-值(key-value)儲存。set和dict類似,也是一組key的集合,但不儲存value。字典和set的key都是不允許重複且key不能是列表。
 
 
一、dict(字典的縮寫)
字典和前面講的list(列表)很相似,但是list不存在value,同時字典也和xml、json很像。字典使用一對大括號表示
1.建立字典表
建立一個學生分數字典
s={'stu1':80,'stu2':90,'stu3':60}

2.查詢

查詢stu1的分數

>>> s['stu1']
80
>>> 

3.修改value

>>> s['stu1']=50
>>> s
{'stu3': 60, 'stu2': 90, 'stu1': 50}

4.增加key

例如增加一個代表學生stu4-stu7的key-value

>>> s['stu4-7']=[40,80,50,60]
>>> s
{'stu3': 60, 'stu2': 90, 'stu1': 50, 'stu4-7': [40, 80, 50, 60]}

注意:key不能是變數(python裡面的變數不太容易理解,就簡單的理解key不能是list就行),但是value可以是變數(python裡面的),value可以是常量、字串、list、tuple等

>>> s['stu8-9']=(80,50)
>>> s
{'stu3': 60, 'stu8-9': (80, 50), 'stu2': 90, 'stu1': 50, 'stu4-7': [40, 80, 50, 60]}

讀取stu8的分數

>>> s['stu8-9'][0]
80
>>> 

5.刪除key

要刪除一個key,用pop(key)方法,對應的value也會從dict中刪除

例如:刪除key"stu1"

>>> s.pop('stu1')
50
>>> s
{'stu3': 60, 'stu8-9': (80, 50), 'stu2': 90, 'stu4-7': [40, 80, 50, 60]}
>>> s['stu1']
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s['stu1']
KeyError: 'stu1'
>>> 

6.判斷一個key是否存在

方法1:直接列印輸出,如果key不存在會返回錯誤

>>> s['stu1']
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s['stu1']
KeyError: 'stu1'
>>> 

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

s.get('stu1')

可以用print列印出None

>>> print (s.get('stu1'))
None
>>> 

可以自己指定key不存在返回的值,例如返回1,但是返回值必須是整形

>>> s.get('stu1',1)
1

方法3:通過in判斷key是否存在,不存在返回Flase

>>> 'stu1' in s
False
>>> 'stu2' in s
True

二、set([])

set和dict類似,也是一組key的集合,但不儲存value;set和dict一樣key不允許是list且key不能重複。

1.建立set

要建立一個set,需要提供一個list作為輸入集合,注意set的固定格式,set([]),在set()中加入list

>>> se=set(['a','b','c'])
>>> se
{'b', 'c', 'a'}

注意:list中的每一個元素都是一個key,但是元素不能是list可以是常量、字串、tuple、浮點型

2.讀取key 

>>> se
{'b', 'c', 'a'}

set不支援索引,所以沒辦法像list和tuple那樣根據索引獲取指定的key,比如se[0]會返回錯誤

4.增加key

通過add(key)方法可以新增元素到set中,可以重複新增,但不會有效果

>>> se.add('d')
>>> se
{'b', 'c', 'd', 'a'}
>>> 

5.刪除key

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

>>> se.remove('c')
>>> se
{'b', 'd', 'a'}
>>> 

6.設定一個list key

>>> se.add(['e','f'])
Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    se.add(['e','f'])
TypeError: unhashable type: 'list'

返回錯誤:沒有對應的list雜湊表

注意:這裡的['e','f']指的是一個元素(key),只不過它是list元素,set([])中的key不支援list.

總結

從dict{}和set([])的返回key可以發現它們是沒有固定的順序的。但是key不能是list。dict的value可以是任何已知的型別值。

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關文章