1. 程式人生 > >資料結構-集合(set)和字典(dict)

資料結構-集合(set)和字典(dict)

前序:
set()表示集合,是一個無序不重複元素的集,特點是消除重複元素,集合物件支援union(聯合),intersection(交),difference(差)和sysmmetric dirrerence(對稱差集)等數學運算。
dict()表示字典,是以(kek,value)這樣的鍵值對來儲存的。

set(集合)

下面就以具體的例項來學習set相關的操作。
set的結構為{'c','c++','python'},是以{ }來包含其中的元素,並且具有去重的功能。

>>>s = {'apple','orange','apple','pear','banana'
,'orange'}
>>>print(s) >>>{'apple','orange','banana','pear'}

這裡看到列印的結果是直接去重之後的,但是細心的話應該已經發現,集合中的元素順序並不是按照建立時的順序列印,可見set是無序的。

建立一個集合

可以直接呼叫set的建構函式來建立一個空的集合

>>>s = set()

是不是在想可不可以這樣建立一個空的集合?

>>>s = {}
#這樣是不行的,因為dict(字典)也是通過{}來包含子元素的,所以系統預設這樣創建出的是一個空的字典
#但是如果是這樣,就是建立了含有一個元素的集合
>>>s = {'apple'} #因為如果是字典,它的單個元素格式為 >>>s = {'蘋果':'apple'}

判斷是否存在
可以採用in關鍵字來判斷一個元素是否在一個集合裡,返回值是一個bool值

>>>s = {'apple','orange','apple','pear','banana','orange'}
>>>'origin' in s
>>>True
>>>'peach' in s
>>>False

並、交、差、補

通過下面這幾個例子,來理解set的數學運算

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a去重後獨有的元素
{'a', 'r', 'b', 'c', 'd'}          
>>> b                                  # b去重後獨有的元素
{'a','c','l','m','z'}                   
>>> a - b                              # a 和 b的差集
{'r', 'd', 'b'}
>>> a | b                              # a 和 b的並集
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # a 和 b的交集
{'a', 'c'}
>>> a ^ b                              # a 和 b的補集
{'r', 'd', 'b', 'm', 'z', 'l'}

集合推導式

>>> a = {x for x in 'abcdabcdabcd' if x not in 'ab'
>>> a
{'c','d'}

dict(字典)

序列是以連續的整數為索引,字典是以關鍵字為索引,關鍵字是任意不可變型別,通常是字串或數值,如果元組中只包含字串和數字,也可以作為關鍵字。
列表不可以做關鍵字,因為列表可以用索引、切割或者append()和extend()等方法改變。

字典的結構為:用{ }來包含所有的元素如:{'蘋果':'apple','香蕉':'banana'},key-value之間用 : 分割,鍵值對和鍵值對之間用 , 分隔。

建立字典

建立空的字典

#通過建構函式
>>>d = dict()
#直接通過符號
>>>d = {}

建立非空字典

#通過建構函式,直接從key-value對中建立字典
>>>d = dict([('蘋果','apple'),('香蕉','banana')])

#直接通過符號建立
>>>d = {'蘋果':'apple','香蕉':'banana'}

增加一個鍵值對

# 如果'橘子'這個key值不存在,則向字典中增加該鍵值對
# 如果'橘子'這個key值存在,則更新它的value為=後面的新值
>>>d['橘子'] = 'orange'

刪除一個鍵值對

# 採用dict內建的pop方法
# 該key值存在,則刪除該鍵值對,返回其value值
>>>d.pop('蘋果')
'apple'
# 該key值不存在,KeyError錯誤

# 也可以採用del關鍵字
>>>del d['蘋果']

查詢key對應的value

#對應key存在,則返回value
>>>d['蘋果']
'apple'

#key值不存在,則報KeyError的錯誤

獲取所有關鍵字或值

#通過dict.keys()可以拿到字典中所有的key值
>>>list(d.keys())
['蘋果','香蕉']
#通過dict.values()可以拿到所有的值
>>>list(d.values())
['apple','banana']

對字典進行排序

sorted(d.keys())

判斷key是否存在

>>>'蘋果' in d
True
>>>'菠蘿' in d
False

遍歷字典

# 使用items方法,得到對應的key-value值
>>>d = {'蘋果':'apple','香蕉':'banana'}
>>>for k,v in d.items():
    print(k,v)
dict items([('蘋果''apple'),('香蕉''banana')])

以上即使關於集合和字典的一些知識點。